0

ユーザーコントロールにグリッドビューがあり、プレースホルダーを使用して動的にコントロールを追加しました。グリッドからのコントロールがグリッドに存在しないことを示しています。コードは次のとおりです。

foreach (GridViewRow row in GridView1.Rows)
{
PlaceHolder plc = (PlaceHolder)row.FindControl("lblPlaceHolder");
TextBox txtTextBox1 = plc.FindControl("txtTextBox1") as TextBox; //its give Null 
}

誰でも答えを得ることができますかplz


コメントから追加されたコード:

foreach (GridViewRow dr in GridView1.Rows) 
{ PlaceHolder placeHolder = dr.FindControl("lblPlaceHolder") as PlaceHolder; 
  TextBox txtTextBox1= new TextBox(); 
  txtTextBox1.Width = 300; 
  placeHolder.Controls.Add(txtTextBox1);
} 
4

1 に答える 1

0

プレースホルダーを削除すると、コントロールを見つけることができます

また、グリッドからonRowDataboundまたはonRowCreatedイベントを使用してコントロールを検索します。


ところで:なぜあなたのプレースホルダーはlblPlaceHolderと呼ばれていますか、そこにラベルがあり、おそらくあなたは間違ったコントロールに年のテキストボックスを見つけるように頼んでいます、それがあなたがnullを取得している理由です

void GridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
    GridViewRow row = e.Row as GridViewRow;
    if (row != null)
    {

    TableCell myCell = row.Cells[0] as TableCell
    TextBox txtTextBox1= new TextBox(); 
    txtTextBox1.Width = 300; 
    myCell.Controls.Add(txtTextBox1);

    }
}
于 2012-07-03T05:57:02.697 に答える