如何从jquery对话框中的按钮触发asp代码

时间:2012-09-26 08:07:48

标签: jquery asp.net linq

在点击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();
         }
     }
}

2 个答案:

答案 0 :(得分:1)

单击对话框时,您似乎在返回false。

 });
 return false;

这样可以防止发生回发..

在此尝试返回true

如果这没有帮助,您必须明确调用 __ doPostback()

答案 1 :(得分: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”

,则会打开对话框

这是一个关于如何在回发后保持对话开放的理论,而不是这个逐字的副本,因为我刚刚把它编成了我的头顶!