【问题标题】:Nested grid does not stay expanded after PageIndexChanged event [duplicate]嵌套网格在 PageIndexChanged 事件后不会保持扩展 [重复]
【发布时间】:2015-05-08 03:27:22
【问题描述】:

我正试图弄清楚在我移动到下一页后如何保持我的嵌套网格展开。 这是我的标记:

<asp:ScriptManager ID="scriptMger" runat="server"></asp:ScriptManager>
<asp:GridView ID="UserGroupGridView" runat="server" AutoGenerateColumns="False">
  <Columns>
  <asp:TemplateField>
    <ItemTemplate>
    <a href="javascript:DivExpandCollapse('div<%# Eval("GroupID")%>');">
    <img id="imgdiv<%# Eval("GroupID")%>" alt="" width="25px" border="0" src="Images/plus.png" /> </a> 
    </ItemTemplate>
  </asp:TemplateField>
  <asp:TemplateField HeaderText="GroupID">
    <ItemTemplate>
    <asp:Label ID="uggvLblGroupID" runat="server" Text='<%# Bind("GroupID") %>'></asp:Label>
    </ItemTemplate>
  </asp:TemplateField> 
  <div id="div<%# Eval("GroupID") %>" style="display:none">
  <asp:UpdatePanel ID="updatePnlNestedGrid" runat="server" UpdateMode="Conditional">
  <ContentTemplate>
  <asp:GridView ID="GroupMemberGridView" runat="server" AutoGenerateColumns="false" OnRowDeleting="GroupMemberGridView_RowDeleting" 
  OnRowCommand="GroupMemberGridView_RowCommand" CssClass="grid" ShowFooter="true" AllowPaging="true" PageSize="5"                         onpageindexchanging="GroupMemberGridView_PageIndexChanging" onpageindexchanged="GroupMemberGridView_PageIndexChanged">
  <Columns>
  <asp:TemplateField HeaderText="MemberID">
    <ItemTemplate>
    <asp:Label ID="mggvLblMemberID" runat="server" Text='<%# Bind("MemberID") %>'></asp:Label>
    </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="Member Name" ItemStyle-Wrap="false"> 
    <ItemTemplate>
    <asp:Label ID="mggvLblMemberName" runat="server" Text='<%# Bind("MemberName") %>'></asp:Label>
    </ItemTemplate>               
    <FooterTemplate>
    <asp:DropDownList ID="mggvDDLMemberName" runat="server" 
    class="chosen-single" data-placeholder="Choose member…">
    </asp:DropDownList>
    </FooterTemplate>
    </asp:TemplateField>
 </Columns>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</Columns>
</asp:GridView>

这是我在页面顶部的 javascript:

<script type="text/javascript">
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(
            function ExpandGrid(groupID) {
                var div = document.getElementById(groupID);
                var img = document.getElementById('img' + groupID);
                div.style.display = "inline";
                img.src = "Images/minus.png";
                $(div + ".chosen-single").chosen("destroy");
                $(div + ".chosen-single").chosen({
                    search_contains: true,
                    width: "100%",
                    no_results_text: "Sorry, no match!"
                });
             });
        }
</script>

这是调用 javascript 的 PageIndexChanged 方法:

protected void GroupMemberGridView_PageIndexChanged(object sender, EventArgs e)
{
 GridView tgvGroupMember = (GridView)sender;              
 int tiGroupID = Convert.ToInt32((tgvGroupMember.Parent.FindControl("uggvLblGroupID") as Label).Text);
 UpdatePanel updatePnl = (UpdatePanel)tgvGroupMember.Parent.FindControl("updatePnlNestedGrid");
 string strJavascriptFnCall = "ExpandGrid(" + tiGroupID.ToString() + ")";
 ScriptManager.RegisterStartupScript(updatePnl, updatePnl.GetType(), "ExpandGrid", strJavascriptFnCall, true);
}

在调试中,当调用 ExpandGrid() javascript 函数时,出现错误:ExpandGrid() 未定义。

该功能位于标签之间和页面顶部。 为什么没有定义?

谢谢。

【问题讨论】:

    标签: javascript gridview nested


    【解决方案1】:

    我的嵌套网格在分页后保持扩展。 这就是我修复它的方式... 首先,我从 javascript 中删除了Sys.WebForms.PageRequestManager.getInstance().add_endRequest,所以函数看起来像这样:

    function ExpandGrid(groupID) {
            var div = document.getElementById(groupID);
            alert("groupID: " + groupID + " div: " + div);
            var img = document.getElementById('img' + groupID);
            div.style.display = "inline";
            img.src = "Images/minus.png";
            $(div + ".chosen-single").chosen("destroy");
            $(div + ".chosen-single").chosen({
                search_contains: true,
                width: "100%",
                no_results_text: "Sorry, no match!"
            });
    

    然后在 PageIndexChanged 中我正确地命名了参数并用单引号括起来:

    string strJavascriptFnCall = "ExpandGrid('div" + tiGroupID.ToString() + "')";
    

    最后,我将 UpdatePanel 放在了 div 的外面,而不是如上所示的里面。

    这让它工作了。 我希望这可以帮助某人。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多