2011-07-10 9 views
1

hase 1 PlaceHolderと2 Button(「行を追加」、「値を取得」)と何もelse.whenをクリックして行を追加するボタンIダイナミックな表を作成し、それ=静的セットClientIDMoodeとセルの中でいくつかのコントロールを配置:静的なClientIDModeを持つページに動的に追加されたコントロールにアクセスする方法

private void CreateTableWithSession(bool FirstLoad) 
{ 
    Table tbl; 
    int Row; 
    if (Session["tbl"]==null) 
    { 
     tbl = new Table(); 
    } 
    else 
    { 
     tbl = (Table)Session["tbl"]; 
    } 
    if (FirstLoad == true) 
    { 
     tbl.Rows.Clear(); 
    } 
    ////////////////////////////////////////////////// 
    if (Session["Row"] == null) 
    { 
     Row = 0; 
    } 
    else 
    { 
     Row = int.Parse(Session["Row"].ToString()); 
    } 
    if (FirstLoad == true) 
    { 
     tbl.Rows.Clear(); 
    } 
    ////////////////////////////////////////////////// 

    TableRow tr1 = new TableRow(); 
    TableCell tc = new TableCell(); 

    TextBox txtBoxUserName = new TextBox(); 
    txtBoxUserName.ClientIDMode = System.Web.UI.ClientIDMode.Static; 
    txtBoxUserName.Text = "0"; 
    Col++; 
    txtBoxUserName.ID = "RowNo" + Row.ToString() + "ColumnNo" + Col.ToString(); 
    tc.Controls.Add(txtBoxUserName); 
    tc.Width = 200; 
    tc.VerticalAlign = VerticalAlign.Middle; 
    tc.HorizontalAlign = HorizontalAlign.Center; 
    tr1.Cells.Add(tc); 

    tc = new TableCell(); 
    TextBox txtBoxPassword = new TextBox(); 
    txtBoxPassword.ClientIDMode = System.Web.UI.ClientIDMode.Static; 
    txtBoxPassword.Text = "0"; 
    Col++; 
    txtBoxPassword.ID = "RowNo" + Row.ToString() + "ColumnNo" + Col.ToString(); 
    tc.Controls.Add(txtBoxPassword); 
    tc.Width = 200; 
    tc.VerticalAlign = VerticalAlign.Middle; 
    tc.HorizontalAlign = HorizontalAlign.Center; 
    tr1.Cells.Add(tc); 

    tbl.Rows.Add(tr1); 

    Session["tbl"] = tbl; 

    PlaceHolder1.Controls.Add(tbl); 
} 

と「値を取得」ボタンをユーザーがクリックすると、2つのテキストボックスの値(つまり、動的に追加).butたびに取得するときに私が欲しいですNullを返します。

TextBox txtBoxUserName = this.FindControl("RowNo1ColumnNo1") as TextBox; 

私はこれを修正してテキストボックス値にアクセスできますか?

おかげ

+0

行を追加して値のボタンコードを取得してください。 –

答えて

1

は動的にあなたがアクセスすることができ、私はあなたがGet Valueボタンを押したときにコントロールを作成していないと確信して前のコントロールを再作成する必要があります作成しました。何かがあなたのために働くでしょう...

protected void AddRow_Click(object sender, EventArgs e) 
{ 
    CreateTableWithSession() 
    ................... 
} 

protected void GetValue_Click(object sender, EventArgs e) 
{ 
    CreateTableWithSession() 
    TextBox txtBoxUserName = this.FindControl("RowNo1ColumnNo1") as TextBox; 
    ........................ 
} 
+0

はい。私は、テーブルを作成する必要がありますように見えると思うpage_loadとフォームにコントロールを追加し、再度テーブルを作成せずにアクセスする方法はありません。 – Arian

関連する問題