【问题标题】:GridView not rendering inside UpdatePanelGridView 不在 UpdatePanel 内呈现
【发布时间】:2020-02-08 20:00:48
【问题描述】:

我在尝试在 UpdatePanel 中显示 GridView 时遇到问题。 首先,在其中使用 GridView 时不会显示初始数据,而当我删除 UpdatePanel 时,会呈现并显示数据。

我要做的第二件事是在通过 Ajax 插入记录后刷新数据网格。 我正在尝试通过javascript单击来执行此操作,但到目前为止还没有结果。 这是我的 aspx 页面:

<asp:Panel ID='pSearchParams' runat="server">
                        <asp:ObjectDataSource ID="historyDataSource" runat="server"
                          TypeName="DataSourceAdapters.DataSourceAdapter"
                          SelectMethod="GetData">
                        </asp:ObjectDataSource>
                        <form runat="server" id="x">
                        <asp:ScriptManager
                          ID="ToolkitScriptManager1" runat="server" >
                        </asp:ScriptManager>
                        <ajax:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional" OnLoad="UpdatePanel2_Load">
                          <ContentTemplate>
                              <div id="triggerDiv" style="display:none;">
                                <asp:Button ID="triggerButton" CausesValidation="false" runat="server" Text="" />
                              <div>
                            <asp:GridView ID="GridViewHistory" CssClass="GridStyle"
                                runat="server" AllowPaging="True" AllowSorting="True"
                                AutoGenerateColumns="False" CellPadding="10"
                                DataSourceID="historyDataSource"
                                ForeColor="#333333">
                                <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
                                <Columns>
                                    <asp:BoundField DataField="CalculationDate" HeaderText="Date" ReadOnly="True" SortExpression="CalculationDate" />
                                    <asp:BoundField DataField="RoughId" HeaderText="Rough ID" ReadOnly="True" SortExpression="RoughId" />
                                </Columns>
                                <RowStyle BackColor="#EFF3FB" />
                                <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
                                <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
                                <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
                                <AlternatingRowStyle BackColor="White" />
                            </asp:GridView>
                         </ContentTemplate>
                         <Triggers>
                            <asp:AsyncPostBackTrigger ControlID="triggerButton" EventName="Click" />
                            <asp:PostBackTrigger ControlID="GridViewHistory" />
                        </Triggers>
                        </ajax:UpdatePanel>
                        </form>
                    </asp:Panel>

以及背后的代码:

protected void Page_Load(object sender, EventArgs e)
    {
        ScriptManager.GetCurrent(Page).RegisterAsyncPostBackControl(triggerButton);
    }


    [WebMethod]
    public static void InsertHistoryItem()
    {
            DataSourceAdapters.DataSourceAdapter adapter = new DataSourceAdapters.DataSourceAdapter();
            adapter.Insert();

        }


    }

    protected void UpdatePanel2_Load(object sender, EventArgs e)
    {
        stepcutCalculationHistoryDataSource.Select();
        GridViewStepcutCalculationHistory.DataBind();
        UpdatePanel2.Update();
    }

奇怪的是,我在 DevTools 的网络选项卡中看到了对 UpdatePanel 的请求,并且响应在那里,但它从未以 html 呈现。

【问题讨论】:

    标签: asp.net gridview webforms updatepanel


    【解决方案1】:

    ScriptManager 控件应位于所有控件的顶部。

    【讨论】:

    • 我把它放在了 asp:Panel 控件的上方,但还是没有区别。 GridView 永远不会被渲染。
    • 。这是最高级的控制。移动脚本管理器和更新面板。在 UpdatePanel 下使用普通的 asp:panel 控件,然后使用 Gridview 它必须工作
    • 它不允许我在更新面板中使用 asp:panel
    • 你能在答案中发布你的例子吗?
    【解决方案2】:
    I have tried it is working fine. This is the sample code.
    
    
    <form id="form1" runat="server">
         <asp:ScriptManager ID="scp1" runat="server">
         </asp:ScriptManager>
            <asp:UpdatePanel ID="upMain" runat="server">
                <ContentTemplate>
                    <asp:Panel id="pnl1" runat="server">
                        <asp:GridView ID="GridViewHistory" CssClass="GridStyle"
                                    runat="server" AllowPaging="True" AllowSorting="True"
                                    AutoGenerateColumns="False" CellPadding="10"
                                    DataSourceID="historyDataSource"
                                    ForeColor="#333333">
                                    <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
                                    <Columns>
                                        <asp:BoundField DataField="CalculationDate" HeaderText="Date" ReadOnly="True" SortExpression="CalculationDate" />
                                        <asp:BoundField DataField="RoughId" HeaderText="Rough ID" ReadOnly="True" SortExpression="RoughId" />
                                    </Columns>
                                    <RowStyle BackColor="#EFF3FB" />
                                    <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
                                    <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
                                    <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
                                    <AlternatingRowStyle BackColor="White" />
                                </asp:GridView>
                    </asp:Panel>
                </ContentTemplate>
            </asp:UpdatePanel>
        </form>
    

    【讨论】:

    • 如果因为我正在使用另一个客户端表单而无法将所有内容包装在一个表单中怎么办?
    【解决方案3】:

    我修好了。最后,这是一个不正确关闭的 div 元素导致了问题。 不过,我为此失去了理智。

    【讨论】:

      猜你喜欢
      • 2010-09-29
      • 1970-01-01
      • 1970-01-01
      • 2012-01-03
      • 1970-01-01
      • 2018-03-19
      • 1970-01-01
      • 1970-01-01
      • 2015-03-20
      相关资源
      最近更新 更多