ASP.Net提交按钮不执行内部jQueryUI对话内容从另一页加载

时间:2011-04-11 01:48:50

标签: c# jquery asp.net jquery-ui

我正在尝试使用jQuery UI的对话框向ASP.NET页面添加一些函数。我试图显示3个单独的对话框,允许用户添加或编辑联系人的地址,电话或电子邮件信息。

我有一个UserView页面,其中包含jQuery,GridView和我加载控件的DIV。我正在使用jQuery的.load(url +'#DIV',函数......功能从第二页称为UserFunctions加载3个框。

这些框全部加载并使用数据正确填充,但是,保存按钮不会提交跳过按钮的单击命令的更改。有没有办法做到这一点?我可以从jQuery对话框手动调用回发吗?如果可能的话,我想远离IFrame。

UserView jQuery Code

        $('#addPhone').load('/Administration/UserFunctions.aspx?Mode=edit&Record=1' + ' #PhoneAdd', function () {
            $(this).dialog({
                modal: true,
                autoOpen: false,
                draggable: true,
                width: 600,
                open: function (type, data) {
                    $(this).parent().appendTo("form:first");
                },
                buttons: {
                    "Close": function () { $(this).dialog("close");  }
                }
            });
        });

UserView和显示对话框按钮

<a href="#" id="A1" onclick="javascript:showDialog('addPhone');">Add Phone</a><br /><br />
        <div id="addPhone">
        </div>

加载的UserFunction DIV

<div id="PhoneAdd">
    <p><span class="Type">Phone Type
        <asp:DropDownList ID="ddPhoneType" runat="server" Width="205px" 
            DataSourceID="odsPhoneType" DataTextField="PhoneName" 
            DataValueField="PhoneTypeID">
        </asp:DropDownList>
        <asp:ObjectDataSource ID="odsPhoneType">
        </asp:ObjectDataSource>
    </span></p>
    <p><span class="Number">Number
        <asp:TextBox ID="ttPhoneNumber" runat="server" Width="100" ></asp:TextBox></span>
        <span class="Extension">Extension
        <asp:TextBox ID="ttPhoneExtension" runat="server" Width="50" ></asp:TextBox></span></p>
    <p><span class="PhoneSubmit"><asp:Button ID="btnPhoneSubmit" runat="server" 
            Text="Save" onclick="btnPhoneSubmit_Click" />
    </span></p></div>

UserFunction按钮单击事件(不会触发)

    protected void btnPhoneSubmit_Click(object sender, EventArgs e)
    {
        if (qString == "insert")
        { //insert to database. Code removed to save room. }

        if (qString == "edit")
        { //update database}
    }

上面的Code Behind永远不会运行(通过尝试调试if语句进行测试)。 预先感谢您的帮助。我非常感激。

1 个答案:

答案 0 :(得分:0)

问题在于,因为你的模式框是ajax请求,所以它们不会回发到各自的页面,而是回发到父页面(UserView)。

您可以通过在模式中放置一个表单并将其发布到另一个页面并在那里处理表单输入来处理此问题。

<form action="/User/PostPhone.aspx" method="post">
    //form elements in here
</form>

然后你的PostPhone.aspx代码会做类似的事情:

if (IsPostBack)
{
    var phoneNumber = Request["phonenumber"];
    //save phone number
}