从C#后面的代码绑定gridview中的动态列模板字段

时间:2016-03-24 15:49:07

标签: c# asp.net gridview

我使用将返回动态列的pivot(动态查询)存储了proc。喜欢

ItemId   A         B              c
------   --        --            --
1        A_Value1   B_Value1     C_Value1
16       A_Value2   B_Value2     C_Value2

这里A,B,C是动态列。有时A只发生A或B,C,D,E等,因为它的数据透视表 然后,  我将结果绑定在gridview中。

我的要求是,我想用结果按钮绑定结果gridview的模板字段。因为我想为每列做rowcommand事件 对于C列

,我的命令参数应该是这样的
CommandArgument = ColumnName+","+ItemID_Value;

CommandArgument = "A,16"; 这该怎么做 。请帮助。

1 个答案:

答案 0 :(得分:0)

您已经回答:)

<asp:TemplateField HeaderText="A">
   <ItemTemplate>
       <asp:LinkButton runat="server" ID="lnkModify" Text="Edit" CommandName="MyCommand">
       </asp:LinkButton>
   </ItemTemplate>
</asp:TemplateField>

OnRowDataBound(或直接在aspx中)

MyClass item = e.Row.DataItem as MyClass;
LinkButton lnk = (LinkButton)e.Row.FindControl("lnkModify");
lnk.CommandArgument = "A," + item.Id; 
编辑:对不起,我现在读到他们是dinamic专栏。 两种解决方案:

  1. 首先,您需要始终拥有所有列。然后你可以编写如上所述的代码但是你有动态HeaderTextCommandArgument可以读取HeaderText(或相对列的索引)。如果列不存在,您可以在Visible上使用LinkButton

  2. 如果您不知道列号,则可以构建数据结构并使用AutoGenerateColumns="true"来绑定数据。

  3. 如果您不需要分页,可以使用嵌套的Repeater(一个用于ABCDE列,一个用于行)。

    希望它有所帮助。