如何为gridcolumn保留数据源

时间:2011-07-18 05:48:51

标签: .net asp.net gridview webforms datasource

参考下面提到的代码块(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>

1 个答案:

答案 0 :(得分:0)

您是否正在获取内部网格的数据以及外部网格?如果是,那么在绑定外部网格时应绑定内部网格,即在设计时使用数据绑定表达式设置其数据源。然后你应该使用java-script在点击展开/折叠按钮时显示/隐藏内部网格 - 不仅这种方法很容易实现,它将在点击展开/折叠按钮时节省服务器行程。

或者,您可以选择仅在单击展开按钮时绑定内部网格。但是,在这种情况下,预取和预取没有意义。存储内部网格的数据以及外部网格。在这种情况下,您应该在单击展开按钮时获取内部网格的数据(因此您不必“持久化数据源”,因为数据将按需获取)。