2012-04-20 33 views
2

有没有办法更新jQuery对话框内的gridview?我有按钮的功能,但是gridview没有更新。以下是我的代码。更新在jQuery对话框内的gridview(ASP.net c#)

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>    

回答

2

为了在GridView更新您可能需要在页面触发回发或做一个服务器端 调用GridView上的DataBind。

你可以尝试另一种选择是在更新面板中添加一个隐藏按钮,然后拨打:

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

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

jquery只是打开和关闭面板“pnlAlerts”作为模态对话框。

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

希望有所帮助。