0

我在带有标签的 GridView 上创建了。我已经编写了存储过程来获取 StatusCode

SELECT StatusCode
From TableName

GridView 中的这一行

<asp:标签 ID="lblStatusCode" runat="server" Visible="false"

Text='<%#DataBinder.Eval(Container.DataItem, "StatusCode")%>' />

.cs 文件中的这些行

Label lblStatusCode = (Label)row.FindControl("lblStatusCode");
objJV.Status = Convert.ToInt32(lblStatusCode.Text);

但即使表中有值,lblStatusCode.Text它也显示为NULL 。

当我独立执行存储过程时,它会给出值。

//绑定函数

protected void Page_Load(object sender, EventArgs e) {

        if (!IsPostBack)
        {
            BindJVJobValidationDetails();

        }


    }

受保护的无效 BindJVJobValidationDetails() {

        JVSummary objJV = new JVSummary();

        DataSet dataJobValidation = new DataSet();

        if (SessionVariables.PERID != null)
        {

            dataJobValidation = objJV.GetjvTransaction(SessionVariables.PERID);

            gvEmployee.DataSource = dataJobValidation;
            gvEmployee.DataBind();

        }

    }

可能是什么问题...?

4

2 回答 2

0

在后面的代码运行之后,文本将应用于页面上的控件。你不能在后面的代码中设置文字吗?

编辑:您正在设置页面上标签的值,即 aspx / ascx 使用Container.DataItem,但该值是在后面的代码运行后设置的。基本上,当后面的代码查看控件时,它的文本属性尚未设置。相反,将 DataRowBinding 事件添加到您的 GridView 并在后面的代码中的事件中设置 lblStatusCode.Text。

于 2012-12-06T11:28:13.987 回答
0

gridview请在's 活动中 尝试此代码OnRowDataBound="GridView_RowDataBound"

protected void GridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        if ((e.Row.DataItem) != null)
        {
            Label lblStatusCode = (Label)e.row.FindControl("lblStatusCode");
            objJV.Status = Convert.ToInt32(lblStatusCode.Text);
        }
    }
}
于 2012-12-06T11:47:01.837 回答