我正在尝试从 Growl Message 的 close 方法更新我的 asp.net gridview。
jQuery代码是:
$.gritter.add({
title: 'Success',
text: msg.d[0],
sticky: true,
after_close: function () {
__doPostBack('UpdatePanel1', '');
}
});
gridview 更新面板是:
<div class="module_content">
<asp:Label runat="server" ID="Label1" />
<asp:GridView ID="grd1">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Hyperlink href="#" id="getSessionID" class="view-details" runat="server">View details</asp:Hyperlink>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Message Id">
<ItemTemplate>
<%# Eval("SessionID") %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Sender">
<ItemTemplate>
<%# Eval("Sender") %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Message Date">
<ItemTemplate>
<asp:HyperLink CssClass="msgDateDate" ID="lnkMsgDateSummary" Text='<%#DateTime.Parse(Eval("MsgDate").ToString()).ToShortDateString()%>' runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Message Type">
<ItemTemplate>
<asp:HyperLink CssClass="msgDateType" ID="lnkMsgDateType" Text='<%# Eval("MsgType")%>' runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Reference">
<ItemTemplate>
<%# Eval("MsgRef")%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Status">
<ItemTemplate>
<%# Eval("Status")%>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
</ContentTemplate>
</asp:UpdatePanel>
gridview 内部是一个超链接,它打开一个对话框,该对话框调用一个 web 方法,这导致 gridview 的数据发生变化。
我使用 Growl 通知来通知最终用户发生了一些变化,然后单击 ok 按钮调用 after_close 函数。
当我调试 OnLoad=UpdatePanel1_Load 时,我可以看到所有更改都被绑定等。
但是,运行 after_close 方法后,我的 GridView 总数消失了,它甚至不再存在于 DOM 中。
奇怪的是标签在那里!
谁能告诉我为什么我的网格消失了?
*编辑*
好的,所以我已将 EmptyDataText 添加到 gridview,并且此处指定的文本可见。所以,即使调用 bindmethod 我的 Gridview 是空的!