-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 を使用して、グリッドビューにデータを表示しています。

 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 に答える