【发布时间】:2013-08-23 20:03:09
【问题描述】:
我想知道是否有人可以帮助我解决我遇到的问题。我正在使用 Asp.net 和 JQuery UI 1.9.2。我的表单上有一个文本框和一个搜索按钮。单击按钮时,服务器端我查询数据库并将所有结果存储在 Gridview 中。为了使 DataTable 与 Asp.Net gridview 一起工作,我在 CS 中执行以下操作:
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
// No point to change settings if there isn't any rows
if (this.gridMemberInfo.Rows.Count <= 0)
return;
// Change table so there is a THEAD
this.gridMemberInfo.HeaderRow.TableSection = TableRowSection.TableHeader;
if(this.gridMemberInfo.ShowFooter)
this.gridMemberInfo.FooterRow.TableSection = TableRowSection.TableFooter;
}
这个 Gridview 位于一个 div 中,我将它用于 JQuery 对话框,以充当模式弹出窗口。在将 gridview 的数据源与查询结果绑定后,我这样做是为了创建模态:
CS:
ScriptManager.RegisterStartupScript(this, this.GetType(), "MemberModal", "CreateMemberModal();", true);
JS:
function CreateMemberModal()
{
$(document).ready(function ()
{
$("#modal").dialog(
{
modal: true,
hide: "explode",
width: 700,
height: "auto",
resizable: false,
open: function (event, ui)
{
$("#gridMemberInfo").dataTable(
{
"bJQueryUI": true,
"sPaginationType": "full_numbers",
"aaSorting": []
});
}
})
});
}
对话框第一次打开时,模态显示正确且运行良好。但是,如果用户关闭对话框并执行不同的搜索,则对话框会打开,但 gridview 不会使用任何 DataTable 属性(在模式中显示为常规 HTML 表)。此外,模态 div 位于 asp:UpdatePanel 内,因此在搜索期间不会重新加载页面。谁能看到我做错了什么?
【问题讨论】:
-
更新面板会在每次更新时重绘内容,所以 $(document).ready 只会处理第一个实例——它会在页面加载时触发。您可以将该代码功能化并在更新面板时调用它。不作为答案发布,因为我认为这只会部分解决您的问题
标签: jquery asp.net jquery-ui datatable updatepanel