我在网格视图中遇到问题,基本上我想要实现的目标如下: 我有一个网格视图,其中我的第一列是一个链接按钮,我必须设置一个条件,其中我的第二列的值被采取并输入到ac#方法,用于poulate我需要分配到我的第一列的值。
我正在尝试下面的代码但是当我查看我的网格时,它显示第一列值为空白。 Aspx页面:
<asp:TemplateField HeaderText="FileName" ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:LinkButton ID="btn" runat="server" CommandName="Click"/>
</ItemTemplate>
</asp:TemplateField>
aspx.cs
if (e.Row.RowType == DataControlRowType.DataRow)
{
int EmpiD = Int32.Parse(e.Row.Cells[2].Text);
DataSet EmpIDDs = GetEMP.getValue(EmpiD);
DataRow EmpRow = EmpIDDs.Tables[0].Rows[0];
e.Row.Cells[0].Text = EmpRow[3].ToString();
}
如果您有任何解决方案,请帮助我
答案 0 :(得分:1)
当我在上面使用时,网格在我的第一列中没有显示任何值 代码
您说LinkButton
位于第一个TemplateField
,然后您无法设置该单元格的Text
属性。您需要使用FindControl
来获取对LinkButton
。
LinkButton btn = (LinkButton)e.Row.FindControl("btn");
int EmpiD = Int32.Parse(e.Row.Cells[2].Text);
DataSet EmpIDDs = GetEMP.getValue(EmpiD);
DataRow EmpRow = EmpIDDs.Tables[0].Rows[0];
btn.Text = EmpRow[3].ToString();
假设您的其余代码是正确的,例如第三列是BoundField
并且包含一个整数,以便e.Row.Cells[2]
起作用。
我不确定你是否熟悉调试器。
答案 1 :(得分:0)
1,我会得到你绑定的数据项,而不是单元格的文本。
第二,你必须使用find控件并设置LinkButton的text属性而不是单元格的文本。
if (args.Row.RowType == DataControlRowType.DataRow)
{
YourObject dataObj = args.Row.DataItem as YourObj;
LinkButton but = args.Row.FindControl("linkButtonId") as LinkBUtton;
if(but != null)
{
but.Text = dataObj.SomePropertyYouWantToUse;
}
}