-1

ダイナミックHTMLテーブル内でダイナミックコントロールを見つけようとしています。私は次のものを持っています:

System.Web.UI.HtmlControls.HtmlTableRow TR = null;
System.Web.UI.HtmlControls.HtmlTableCell TD1 = null;
System.Web.UI.HtmlControls.HtmlTableCell TD2 = null;
System.Web.UI.HtmlControls.HtmlTableCell TD3 = null;
System.Web.UI.HtmlControls.HtmlTableCell TD4 = null;
System.Web.UI.HtmlControls.HtmlTableCell TD5 = null;
System.Web.UI.HtmlControls.HtmlTableCell TD6 = null;

// Database stuff
int i = 1;
while (objRdr.Read())
{
    TR = new System.Web.UI.HtmlControls.HtmlTableRow();
    TD1 = new System.Web.UI.HtmlControls.HtmlTableCell();
    TD2 = new System.Web.UI.HtmlControls.HtmlTableCell();
    TD3 = new System.Web.UI.HtmlControls.HtmlTableCell();
    TD4 = new System.Web.UI.HtmlControls.HtmlTableCell();
    TD5 = new System.Web.UI.HtmlControls.HtmlTableCell();
    TD6 = new System.Web.UI.HtmlControls.HtmlTableCell();

    // ASP code maybe wrong, but its to give you the ID.
    TD1.InnerHtml = "<asp:RadioButton runat='server' ID='radApprove"+i.ToString()+"' Value='Approve' />";
    TD2.InnerText = HttpUtility.HtmlEncode(objRdr[1].ToString());
    TD3.InnerText = HttpUtility.HtmlEncode(objRdr[6].ToString());
    TD4.InnerText = HttpUtility.HtmlEncode(objRdr[2].ToString());
    TD5.InnerText = HttpUtility.HtmlEncode(objRdr[10].ToString());
    TD6.InnerText = HttpUtility.HtmlEncode(objRdr[8].ToString());

    TR.Cells.Add(TD1);
    TR.Cells.Add(TD2);
    TR.Cells.Add(TD3);
    TR.Cells.Add(TD4);
    TR.Cells.Add(TD5);
    TR.Cells.Add(TD6);

    tblOrderItems.Rows.Add(TR);
    TR = null;
    TD1 = null;
    TD2 = null;
    TD3 = null;
    TD4 = null;
    TD5 = null;
    TD6 = null;
    i++;
}

さて、セルからデータを取得しようとすると失敗します。私が試してみました:

this.FindControl("radApprove1");

しかし、これはを返しますnull。テーブルの行も繰り返してみましたが、1行しか表示されておらず、それがヘッダーです。このコードはから呼び出されるPage_Loadので、これらのコントロールを取得できると思いました。レンダリング後にページのHTMLソースを表示すると、正しくレンダリングされていることがわかります。何か案は?

4

2 に答える 2

0

this.FindControl( "radApprove1"); コントロールのメインINamingContainerのみをチェックします。再帰的に見つけるか、次のことを行う必要があります。

擬似:

foreach row in a table.Rows
  foreach cell in row
    cell.FindControl()
于 2012-09-11T20:40:50.830 に答える
0
TD1.InnerHtml = "<asp:RadioButton runat='server' ID='radApprove"+i.ToString()+"' Value='Approve' />"

上記が機能するかどうかは完全にはわかりません。<asp:Table>この問題を処理するためにを使用することを検討してみませんか?

限られた程度で子コントロールを見つけるための手法があります:http ://weblogs.asp.net/dwahlin/archive/2006/08/25/Finding-ASP.NET-Child-Controls_2E002E002E002E00_The-Simple-Way.aspx

お役に立てれば。

于 2012-09-12T01:47:54.570 に答える