e.Row.Cell添加控件不起作用

时间:2011-06-27 19:53:17

标签: c# asp.net

我有一个代码:

 protected void gvContacts_RowDatabound(object sender, GridViewRowEventArgs e)
    {       

    Label label = new Label();
    label.Text = "test";        

    if (e.Row.RowType == DataControlRowType.DataRow && e.Row.RowIndex == 0)
    {
        for (int i = 0; i < e.Row.Cells.Count; i++)
        {
            e.Row.Cells[i].Controls.Add(label);  //doesnt work
            e.Row.Cells[i].Text = "this works";

        }
    }
}

其中标签不出现在我的单元格中。怎么了?

4 个答案:

答案 0 :(得分:1)

您需要在每个循环中创建标签的新实例

for (int i = 0; i < e.Row.Cells.Count; i++)
{
   label = new Label();
   label.Text = "test";
   e.Row.Cells[i].Controls.Add(label);
   e.Row.Cells[i].Text = "this works";
}

答案 1 :(得分:0)

首先要做的事情:

  • 确保RowType实际上是DataControlRowType.DataRow
  • 确保e.Row.RowIndex == 0

在代码中设置断点,以便确保这些值。

在此之后,看起来您的代码应该可以正常工作。

答案 2 :(得分:0)

假设你有一个标题行:

 if (e.Row.RowType == DataControlRowType.DataRow && e.Row.RowIndex == 0)

您的第0行将是DataControlRowType.HeaderRow

你想要!= 0,我想

答案 3 :(得分:0)

尝试在添加控件之前添加TableCell:

TableCell cell = new TableCell();      
e.Row.Cells.Add(cell);
e.Row.Cells[i].Controls.Add(label);