Label对象中的Null值

时间:2012-12-06 11:22:03

标签: c# asp.net

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

SELECT StatusCode
From TableName

GridView中的这一行

< asp:Label 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();

        }


    }

protected void BindJVJobValidationDetails()         {

        JVSummary objJV = new JVSummary();

        DataSet dataJobValidation = new DataSet();

        if (SessionVariables.PERID != null)
        {

            dataJobValidation = objJV.GetjvTransaction(SessionVariables.PERID);

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

        }

    }

可能是什么问题......?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

请在gridview的活动中试用此代码 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);
        }
    }
}