Как отобразить значение в диалоге SimpleModal?

Мой вопрос действительно прост. У меня есть кнопка 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>

3 ответа

Решение

Полагаю, поскольку вы сказали, что ваш вопрос прост, вы просто не знакомы с jQuery. Вы можете положить это в свой click функция или в $(document).ready функция, в зависимости от ваших полных требований:

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

Примечание: вам нужно будет использовать .html вместо .text если у вас есть строка с тегами, но .text быстрее.

Lol, я отвечаю на свой вопрос снова, но я буду благодарен mNVhr tho.

Я наконец получил всю эту работу. Уловка для кнопки 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();
}

Я надеюсь, что этот крошечный код поможет тем разработчикам asp.net, которые хотят использовать хороший jQuery в своих проектах.

Как видите, из приведенных выше кодов.

Когда я нажимаю на кнопку btnOpen, запускаются два постбэка. Один из них - из кода asp.net, который назначает текущую дату и время элементу управления textbox внутри модального диалога. Второй постбэк от javascript, который открывает модальное диалоговое окно. Кнопка asp.net должна быть внутри панели обновления. В противном случае модальное диалоговое окно останется на 0,5 секунды.

Когда я нажимаю на btnSave внутри модального диалога. Обратная передача также произошла. У меня есть немного логики здесь. Когда значение текстового поля равно 1, я вызываю функцию closeDialog(). Если значением являются другие числа, модальное диалоговое окно остается открытым, и элемент управления меткой внутри диалогового окна будет отображать число из текстового поля.

jQuery хорош, но как разработчик.Net он просто новый, и иногда мне трудно его понять, особенно из-за конфликта обратных передач между javascript и.net.

Я надеюсь, что этот ответ полезен.

Другие вопросы по тегам