-1

任何人都可以教我如何在我单击出现在 jquery 弹出对话框中的按钮后触发背后的 asp 代码吗?我希望我的数据发送到服务器端

这是我的表格:

<div id="dialog" hidden>

 fullname:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox></br>
 password:<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox></br>
 email:<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox></br>

<asp:Button ID="Submit" runat="server" Text="Button" onclick="Button1_Click" hidden/>

</div>

我的 jquery 对话框将弹出我的表单:

<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>


<script type="text/javascript" language="javascript" >

jQuery(document).ready(function () {


    $('#<%=open.ClientID%>').click(function () {

        $('#dialog').dialog({ modal: true,
            height: 500,
            width: 600,
            resizable: false,
            show: 'fold',
            hide: 'fold',
            }

        });
        return false;
    });
});

这是我的asp代码。我正在使用 linq 在 gridview 中显示数据:

 protected void Page_Load(object sender, EventArgs e)
    {
        showData();
    }


     protected void showData()
     {
         using(AutoBetDataContext db = new AutoBetDataContext())
         {
             var query = from u in db.UserDetails
                         select u;

             GridView.DataSource= query;
             GridView.DataBind();
         }
     }

     protected void Button1_Click(object sender, EventArgs e)
     {
         using (AutoBetDataContext db = new AutoBetDataContext())
         {
             UserDetail user = new UserDetail();
             user.Fullname = TextBox1.Text;
             user.Password = TextBox2.Text;
             user.EmailAddress = TextBox3.Text;
             db.UserDetails.InsertOnSubmit(user);
             db.SubmitChanges();
             showData();
         }
     }
}
4

2 回答 2

1

单击对话框时,您似乎在最后返回 false ..

 });
 return false;

这将防止回发发生..

尝试在此处返回 true ..

如果这没有帮助,您必须显式调用__doPostback()

于 2012-09-26T08:15:42.890 回答
0

我怀疑您的问题出在command按钮上 - 它似乎与回帖有关,页面已刷新,您的对话框无法显示。

您单击open并显示对话框,然后return false防止回发。

然后在对话框中,输入详细信息并单击带有 ID 的按钮Submit- 这会触发回发,从而触发事件Button1_Click

为了阻止表单被新数据填充,我个人会更改以下内容:

protected void Page_Load(object sender, EventArgs e)
{
    if(!IsPostBack)
    { // Only do this if the page is a fresh request.
        showData();
    }
} 

否则,页面将加载,新的详细信息将被加载。

然而,由于页面现在被回发,jQuery 对此一无所知,因此对话被隐藏(按照正常的页面加载)。

你总是可以有一个隐藏的字段:

<asp:hidden id="hdnOpenDialogue" runat="server" value="false" />

然后在Button1_Click奔跑中hdnOpenDialogue.value = "true";

然后使用以下 jQuery:

$('[id$="hdnOpenDialogue"]').each(function(idx) {
    if($(this).attr("value") == "true") {
                $('#dialog').dialog({ modal: true, height: 500,
                        width: 600, resizable: false,
                        how: 'fold', hide: 'fold',
                  }
               });       
    };
});

如果隐藏字段设置为“true”,这将打开您的对话

这更多的是关于如何在回发后保持对话开放的理论,而不是逐字复制,因为我刚刚将其编码!

于 2012-09-27T13:13:26.197 回答