1

私の質問は本当に簡単です。asp.netボタンがあります。これを使用して simpleModal を呼び出し、ダイアログを表示できます。ここで、ダイアログにラベル コントロールを追加し、このラベルに何らかの値を表示させたいと考えています。私は何をすべきか?

これが私のコードです

$('#<%= btnOpen.ClientID %>').click(function(e) {
            e.preventDefault();

            $('#content').modal({
                onOpen: function(dialog) {
                    dialog.overlay.fadeIn('slow', function() {
                        dialog.data.hide();
                        dialog.container.fadeIn('slow', function() {
                            dialog.data.slideDown('slow');

                        });
                    });
                },
                onClose: function(dialog) {

                    dialog.data.fadeOut('slow', function() {
                        dialog.container.slideUp('slow', function() {
                            dialog.overlay.fadeOut('slow', function() {
                                $.modal.close(); // must call this!

                            });
                        });
                    });
                }

            });
            e.preventDefault();
            // return false;
        });
<asp:Button ID="btnOpen" runat="server" Text="ASP.NET Open"/>

<div id="content" style="display: none;">

    <asp:Label ID="Label1" runat="server" Text=""></asp:Label>

</div>
4

3 に答える 3

1

笑、私は再び自分の質問に答えていますが、私はmNVhrthoにクレジットを与えます。

私はついにすべてがうまくいくようになりました。asp.netボタンがjavascriptのポストバックとともにポストバックを起動するための秘訣は、asp.netボタンを更新パネルに配置することです。これが私が持っているコードです

javascriptの部分の場合:

<script src="js/jquery-1.4.2.min.js" type="text/javascript"></script>

<script src="js/jquery.simplemodal-1.3.5.js" type="text/javascript"></script>

<script type="text/javascript">

    function myOpen() {
        $('#content').modal({
            onOpen: function(dialog) {
                dialog.overlay.fadeIn('slow', function() {
                    dialog.data.hide();
                    dialog.container.fadeIn('slow', function() {
                        dialog.data.slideDown('slow');

                    });
                });
            },
            onClose: function(dialog) {

                dialog.data.fadeOut('slow', function() {
                    dialog.container.slideUp('slow', function() {
                        dialog.overlay.fadeOut('slow', function() {
                            $.modal.close(); 

                        });
                    });
                });
            }

        });


    }

    function myClose() {
        $.modal.close();


    }


</script>

HTMLマークアップの場合

<asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
        <asp:Button ID="btnOpen" runat="server" Text="Open" OnClick="btnOpen_Click" OnClientClick="myOpen();" />
    </ContentTemplate>
</asp:UpdatePanel>
<div id='content' style="display: none">
    <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
        <ContentTemplate>
            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
            <asp:Button ID="btnSave" runat="server" Text="Save" OnClick="btnSave_Click" />
            <input id="Button2" type="button" value="Close" onclick="myClose();" />
            <asp:Label ID="Label2" runat="server" Text=""></asp:Label>
        </ContentTemplate>
    </asp:UpdatePanel>
</div>

背後にあるコードの場合:

 protected void Page_Load(object sender, EventArgs e)
{

}
private void CloseDialog()
{

    string script = string.Format(@"myClose()");
    ScriptManager.RegisterClientScriptBlock(this, typeof(Page), UniqueID, script, true);
}
protected void btnSave_Click(object sender, EventArgs e)
{
    if (TextBox1.Text == "1")
        CloseDialog();
    else
        Label2.Text = TextBox1.Text;

}
protected void btnOpen_Click(object sender, EventArgs e)
{
    TextBox1.Text = DateTime.Now.ToString();
    UpdatePanel1.Update();
}

この小さなコードが、プロジェクトで優れたjQueryを使用したいasp.net開発者に役立つことを願っています。

于 2010-06-10T04:08:58.373 に答える
1

質問は単純だとおっしゃっていたので、jQueryに慣れていないだけだと思います。完全な要件に応じて、これをclick関数または関数に入れることができます。$(document).ready

var yourValue = ; // put your function or value here
$('#Label1').text(yourValue);

注:タグ付きの文字列がある場合は、.html代わりにを使用する必要がありますが、より高速です。.text.text

于 2010-06-10T02:41:05.060 に答える
1

ご覧のとおり、上記のコードから。

btnOpen ボタンをクリックすると、2 つのポストバックが発生しました。1 つは、現在の日時をモーダル ダイアログ内のテキスト ボックス コントロールに割り当てる asp.net コード ビハインドからのものです。2 番目のポストバックは、モーダル ダイアログを開く JavaScript からのものです。asp.net ボタンは更新パネル内にある必要があります。そうしないと、モーダル ダイアログは約 0.5 秒間しか表示されません。

モーダル ダイアログ内の btnSave をクリックすると。ポストバックも発生。ここには少し論理があります。テキスト ボックスの値が 1 の場合、closeDialog() 関数を呼び出します。値が他の数値の場合、モーダル ダイアログは開いたままになり、ダイアログ内のラベル コントロールにテキスト ボックスの数値が表示されます。

jQuery は優れていますが、.Net 開発者としては新しいものであり、特に javascript と .net 間のポストバックの競合のために、理解するのが難しい場合があります。

この回答がお役に立てば幸いです。

于 2010-06-10T04:15:59.480 に答える