我在带有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();
}
}
可能是什么问题......?
答案 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);
}
}
}