参考下面提到的代码块(Designer- .ASPX),我试图在运行时将内部gridview与List<>
绑定。内部gridview的List<>
是外部网格的数据源的成员。
从设计中可以看出,我想仅在用户点击嵌入的“+”图像按钮后才将内部gridview与相应的数据源绑定。
我可以在按钮单击时找到内部gridview,但不知道如何持久保存数据源。每列都有自己的List<>
数据源,所以我无法使用会话或视图状态。
任何人都可以告诉我如何在内部gridview中保留它并在用户点击“+”符号后在运行时绑定它?
<asp:GridView ID="gvMain" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="Name" HeaderText="Name" />
<asp:TemplateField HeaderText="Lateral">
<ItemTemplate>
<asp:CheckBox ID="chkLateral" runat="server" Checked='<%# Eval("Lateral") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Types">
<ItemTemplate>
<table>
<tr>
<td>
<asp:ImageButton OnClick="imgExpandbtn_OnClick" ID="imgExpandbtn" runat="server" ImageUrl="~/Styles/Images/Plus.png" />
<asp:Label runat="server" ID="lblTypes" Text='<%# Eval("Types") %>'></asp:Label>
</td>
</tr>
</table>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:GridView ID="gvInner" runat="server" AutoGenerateColumns="false">
</asp:GridView>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Active">
<ItemTemplate>
<%# (Boolean.Parse(Eval("IsActive").ToString())) ? "Y" : "N"%>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
答案 0 :(得分:0)
您是否正在获取内部网格的数据以及外部网格?如果是,那么在绑定外部网格时应绑定内部网格,即在设计时使用数据绑定表达式设置其数据源。然后你应该使用java-script在点击展开/折叠按钮时显示/隐藏内部网格 - 不仅这种方法很容易实现,它将在点击展开/折叠按钮时节省服务器行程。
或者,您可以选择仅在单击展开按钮时绑定内部网格。但是,在这种情况下,预取和预取没有意义。存储内部网格的数据以及外部网格。在这种情况下,您应该在单击展开按钮时获取内部网格的数据(因此您不必“持久化数据源”,因为数据将按需获取)。