0

我在 gridview 的行中添加了一个复选框,单击该复选框将在该行中展开一个面板。我的 gridview 需要使用分页,所以我在页面更改之前将当前页面的状态保存在会话变量中。当用户单击返回页面时,我正在重新填充复选框,但这不会展开面板。是否可以从后面的代码中扩展面板?

<asp:CheckBox runat="server" Text="Order Updated Records" ID="cbUR" Visible='<%# !DBNull.Value.Equals(Eval("AnyBox"))%>' /> 
<asp:CollapsiblePanelExtender ID="cInst" runat="server" TargetControlID="inst" Collapsed="true" AutoExpand="true" AutoCollapse="false" ExpandControlID="cbUR" CollapseControlID="cbUR" />
<asp:Panel ID="Inst" runat="server">
    <asp:TextBox runat="server" ID="txtInst" TextMode="MultiLine" Width="200" />
</asp:panel>

我尝试从代码中添加面板、文本框和面板扩展器,但无法使其正常工作。我在另一篇文章中读到,整个 gridview 需要从代码中加载才能正常工作。

我很想使用类似的东西

<asp:CollapsiblePanelExtender ID="cInst" runat="server" TargetControlID="inst" Collapsed='<%#!Convert.ToBoolean(rowItems[index].ToString()) %>' />

不使用 CollapsiblePanelExtender 并找到不同的方式来显示面板会更好吗?

4

1 回答 1

0

您可以尝试添加公共/受保护的方法:

public bool IsCollapsed(object rowId) {
    //get row by ID here and return true if collapsed
    return ....
}

这将为需要展开或折叠的行返回一个值。

并像这样使用它:

Collapsed='<%# IsCollapsed(Eval("RowId")) %>'

其中 RowId 是表示项目 ID 的属性。

于 2012-09-21T19:13:11.150 回答