c# - 更新 jquery 对话框内的 gridview (ASP.net c#)

标签 c# jquery asp.net gridview jquery-ui-dialog

有没有办法更新 jquery 对话框内的 gridview?我的按钮可以正常工作,但是 GridView 没有更新。下面是我的代码。

JS:

    <script type="text/javascript" language="javascript">

$(document).ready(function () {

    function BindEvents() {


        //alerts dialog
        $( "#pnlAlerts" ).dialog({            
            autoOpen: false,
            modal: true,
            width: 700,             
            open:function(){{
                $(this).parent().appendTo($("form:first"));
            }}

        });

        $('.openAlert').click(function () {        
            $( '#pnlAlerts' ).dialog( 'open' );
        });
          }

    BindEvents();

}); 

前端:

            <asp:Panel runat="server" ID="pnlAlerts" Visible="true" class="alert-dialog">

            <asp:UpdatePanel ID="updPanelAlert" runat="server" >
                <ContentTemplate>
                    <asp:Label id="lblDatabaseStatus" runat="server" CssClass="left found" />

                    <asp:Panel id="pnlAlert" Runat="Server" Visible="true">

                        <div id="table-search">
                            <asp:Button ID="btnDelete" runat="server" Text="Delete" CssClass="btn normal-btn left" onclick="btnDelete_Click"  />
                            &nbsp;&nbsp;<asp:Button ID="btnMark" runat="server" Text="Mark as Read" CssClass="btn normal-btn left" onclick="btnMark_Click"  />
                            <!-- Loader -->
                            <asp:UpdateProgress ID="updProgress" runat="server" AssociatedUpdatePanelID="updPanelAlert" class="loader" DisplayAfter="1">
                                <ProgressTemplate>
                                        <asp:Image ID="imgPleaseWait" runat="server" ImageUrl="~/images/pleasewait.gif" />
                                </ProgressTemplate>
                            </asp:UpdateProgress>

                            <div class="nip">
                            </div>
                            <br class="clear"/>
                        </div>
                        <asp:SqlDataSource ID="sqldsAlert" runat="server" 
                            ConnectionString="<%$ ConnectionStrings:ABCDB %>" 
                            SelectCommand="sp_AlertsGet" SelectCommandType="StoredProcedure">
                            <SelectParameters>
                                <asp:ControlParameter  ControlID="lblUserID" Name="UserID" Type="String" Direction="Input" />
                                <asp:Parameter DefaultValue="null" Direction="InputOutput" Name="op_status" 
                                    Type="String" />
                            </SelectParameters>
                        </asp:SqlDataSource>
                        <asp:Panel id="pnlAlertGrid" runat="server" ScrollBars="Auto" EnableTheming="false">
                            <!-- Table data -->
                            <asp:GridView id="gvAlertGrid" runat="server"  CssClass="grid" 
                                GridLines="Vertical" DataKeyNames="AlertID" AutoGenerateColumns="False" 
                                width="100%" PageSize="50" Border="0" 
                                AllowPaging="True" AllowSorting="True" PagerSettings-Position="Bottom" 
                                DataSourceID="sqldsAlert">

                                <Columns>

                                    <asp:TemplateField HeaderText="AlertID" Visible="false">
                                        <ItemTemplate>
                                            <asp:Label ID="lblAlertID" Text='<%# Eval("AlertID")%>'  runat="server" />
                                        </ItemTemplate>
                                    </asp:TemplateField>

                                    <asp:TemplateField HeaderText="&nbsp">
                                        <itemTemplate>
                                            <asp:CheckBox ID="cbDeleteMark" width="25px" Checked="false" runat="server" Enabled="True"/>
                                        </itemTemplate>
                                    </asp:TemplateField>

                                    <asp:TemplateField HeaderText="Subject" SortExpression="AlertSubject">
                                        <itemTemplate>
                                            <asp:Label ID="lblAlertSubject" Text='<%# Eval("AlertSubject")%>' ForeColor='<%# SetColor(Eval("ReadStatus"))%>' runat="server" />
                                        </itemTemplate>
                                    </asp:TemplateField>

                                    <asp:TemplateField HeaderText="Type" SortExpression="Priority">
                                        <itemTemplate>
                                            <asp:Label ID="lblPriority" Text='<%# Eval("Priority")%>' ForeColor='<%# SetPriorityColor(Eval("ReadStatus"), Eval("Priority"))%>' runat="server" />
                                        </itemTemplate>
                                    </asp:TemplateField>

                                    <asp:templatefield headertext="Received" SortExpression="Date">
                                        <itemtemplate>
                                          <asp:label id="lblDate" ForeColor='<%# SetColor(Eval("ReadStatus"))%>'
                                            text= '<%# String.Format("{0:dd/MM/yy}",Eval("[Date]")) %>'
                                            runat="server"/> 
                                        </itemtemplate>
                                        <ItemStyle HorizontalAlign="Center" />                          
                                    </asp:templatefield>

                                </columns>
                            </asp:GridView>
                        </asp:Panel>
                    </asp:Panel>
                </ContentTemplate>
            </asp:UpdatePanel>
            <asp:Label runat="server" ID="lblUserID" Visible="false"></asp:Label>
        </asp:Panel>            

最佳答案

为了更新 GridView,您需要让页面触发回发或执行服务器端操作 调用 GridView 上的 DataBind。

您可以尝试的另一个选项是在更新面板中添加一个隐藏按钮,然后调用:

__doPostBack('<%= Button.ClientID %>','');

这应该刷新更新面板,从而刷新 GridView。

您刚刚打开和关闭面板“pnlAlerts”作为模式对话框的 jquery。

如果您想编辑 GridView 中的数据,您将需要 EditTemplates。

希望有帮助。

关于c# - 更新 jquery 对话框内的 gridview (ASP.net c#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10242092/

相关文章:

c# - 在多个图表中添加标题标题

c# - 澄清 ColorMatrix 转换的工作原理

javascript - 缺少形式参数

c# - Azure 存储和条件替换/合并

javascript - 切换 js 和可扩展的 div

jquery - 遍历对象+数组+对象

asp.net - IIS 后面的 Kestrel 的 "Server"响应 header

asp.net - 如何使用 SQL Server 将 React Native 应用程序与 ASP.NET Web 服务连接?

c# - 在 ASP.NET aspx 页面中使用 `<%= "{0}, {1 }", arg1, arg2 %>` 代替 `<%= string.Format("{0}, {1 }", arg1, arg2) %>` 是否有效

c# - metro 应用中的图像处理