GridView事件RowCreated它是在渲染控件后发生的吗?

时间:2010-12-01 07:40:46

标签: c# asp.net

我需要以编程方式在GridView中更改Label的值。

我使用此代码但不起作用。我无法找到控制权。

  • 在呈现控件之前,我的问题是_RowCreated事件触发?
  • 如果是,我应该使用哪个活动?

由于

       protected void uxListAuthorsDisplayer_RowCreated(object sender, GridViewRowEventArgs e)
        {
            int myRowIndex = e.Row.RowIndex;
            //Label myLabel = (Label)e.Row[myRowIndex].FindControl("uxUserIdDisplayer");
            if (myRowIndex >= 0)
            {
                //e.Row.Cells[3].Text = "Ciao";
                Label myLabel = (Label)e.Row.FindControl("uxUserIdDisplayer");
                myLabel.Text = "TEST";
            }
        }

2 个答案:

答案 0 :(得分:3)

您正在搜索行中带有索引“RowIndex”的单元格。

protected void uxListAuthorsDisplayer_RowCreated(object sender, GridViewRowEventArgs e)
{
    // Skip the header and footer rows
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        Label myLabel = (Label) e.Row.FindControl("uxUserIdDisplayer");
    }
}

我更喜欢使用RowDataBound事件,因为当数据绑定到行时会发生这种情况,因此您可以通过DataBinder.Eval访问数据(e.Row.DataItem,“数据项”)< / p>

答案 1 :(得分:1)

GridView.RowCreated事件是合适的。也许您应该检查它是否不是标题行,例如确实无法找到控件的情况:

if(e.Row.RowType == DataControlRowType.DataRow)
{
    Label myLabel = (Label)e.Row.FindControl("uxUserIdDisplayer");
    myLabel.Text = "TEST";
}