自动关闭Jquery对话框

时间:2011-03-18 10:01:58

标签: jquery asp.net jquery-ui jqgrid

<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]并自动关闭对话框?为什么?

2 个答案:

答案 0 :(得分:0)

我的WebForms有些生疏,但如果每次更改到另一行时都会调用GridView1_SelectedIndexChanging,则代码将每次重新创建对话框。这可能就是它消失的原因。

答案 1 :(得分:0)

每当您在网格中选择另一行时,需要触发服务器上的GridView1_SelectedIndexChanging事件,因为需要发生完整的PostBack以获取更改的数据。

每当发生PostBack时,使用JavaScript完成的所有操作都将消失,并且需要在再次加载页面时再次初始化。

PostBack视为对服务器的新页面请求。

您可以考虑使用 ASP.NET AJAX 并将DataGrid放在UpdatePanel中以避免整页PostBack,但只能使用DataGrid部分。