<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
onselectedindexchanged="GridView1_SelectedIndexChanged"
onselectedindexchanging="GridView1_SelectedIndexChanging">
<Columns>
<asp:CommandField HeaderText="Show" SelectText="ShowMessage"
ShowSelectButton="True" />
</Columns>
</asp:GridView>
<div id="content"><div>
protected void GridView1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
{
string html = "";
for (int i = 0; i < GridView1.Rows.Count; i++)
{
html += "<div style='display:none' id='" + i + "'>" + GridView1.Rows[i].Cells[3].Text + "</div>";
GridView1.Rows[i].Cells[0].Attributes.Add("onclick", "$('#" + i + "').dialog()");
}
content.InnerHtml = html;
}
显示对话框onclick cells [0]并自动关闭对话框?为什么?
答案 0 :(得分:0)
我的WebForms有些生疏,但如果每次更改到另一行时都会调用GridView1_SelectedIndexChanging
,则代码将每次重新创建对话框。这可能就是它消失的原因。
答案 1 :(得分:0)
每当您在网格中选择另一行时,需要触发服务器上的GridView1_SelectedIndexChanging
事件,因为需要发生完整的PostBack
以获取更改的数据。
每当发生PostBack
时,使用JavaScript完成的所有操作都将消失,并且需要在再次加载页面时再次初始化。
将PostBack
视为对服务器的新页面请求。
您可以考虑使用 ASP.NET AJAX 并将DataGrid
放在UpdatePanel
中以避免整页PostBack
,但只能使用DataGrid部分。