在gridview中的rowdatabound上分配列值

时间:2012-10-09 11:11:41

标签: c# asp.net

我在网格视图中遇到问题,基本上我想要实现的目标如下: 我有一个网格视图,其中我的第一列是一个链接按钮,我必须设置一个条件,其中我的第二列的值被采取并输入到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();
}

如果您有任何解决方案,请帮助我

2 个答案:

答案 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]起作用。

我不确定你是否熟悉调试器。

调试 - 教程:http://www.dotnetperls.com/debugging

答案 1 :(得分:0)

1,我会得到你绑定的数据项,而不是单元格的文本。

第二,你必须使用find控件并设置LinkBut​​ton的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;
}
}