0

我有一个带有更新面板的 asp.net 网络表单应用程序。它也在列表视图中,我不知道这是否重要。

我有以下Javascript ..

<script lang="javascript" type="text/javascript">
function pageLoad(sender, args)
{

$(document).ready(function () {

$('textarea.epop').live('click', test);
});

function tes(event)
{
        var btn = $(this);
        alert(btn.val());

        $('#editortext').val(btn.val());

        var dialog = $('#edialog').dialog({
          modal: true,
          width:'auto',
          resizable: false,

          buttons: {
            'OK': function() {
              alert($('#editortext').val());
              alert(btn.val());

              btn.val($('#editortext').val());

              $('#editortext').val("");
              $(this).dialog('close');
              return false;
            }
          }
        });
        // Move the dialog back into the <form> element
        dialog.parent().appendTo(jQuery("form:first"));

        $('#edialog').dialog('open');

  return false;
}

}
</script>

然后我在html正文中有这个..

<div id="edialog" title="Edit SQL" style="display: none">
    <label for="editortext">
        SQL Query:</label>
    <textarea rows="20" cols="100" id="editortext" class="editortext"></textarea>      
</div>

然后在我的列表视图中的一个列表项中,它位于更新面板内。我有..

<asp:TextBox ID='txtSQLQuery' CssClass="epop" TextMode="multiline" Columns="50" Rows="5" runat="server" Text='<%# Eval("SQLQuery") %>' />

代码第一次完美运行,没有回发。但是说我更改了选择,然后发生了自动回发……然后代码不再设置文本……当您单击确定时……使用警报我可以看到它实际上仍在引用旧值而不是新当前值显示的值似乎调用了点击。

在这一点上,我难住了..

4

1 回答 1

0

如果您在 updatepanel 中有控件并且更新面板设置为 updatemode ="condicional" 您可能必须从服务器端代码调用 updatePanel.update() 来更新值。

经常发生的另一件事是更新面板和 jquery 不是最好的朋友,因此最好像这样编写或初始化您的代码:

$(document).ready(function () {

     $('textarea.epop').live('click', function(e){
             test();
       });
});

// 在回发之后再次注册

   var prm = Sys.WebForms.PageRequestManager.getInstance();
    prm.add_endRequest(function() {

      $('textarea.epop').live('click', function(e){
             test();
       });
    })
于 2013-10-17T22:08:21.117 回答