我有一个带有更新面板的asp.net Web表单应用程序。 它也在列表视图中,我不知道这是否重要。
我有以下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") %>' />
代码在没有回发的情况下第一次完美无缺。 但是说我改变选择,然后发生自动回发...... 然后代码不再设置文本..当你单击确定.. 使用警报我可以看到它实际上仍然引用旧值而不是新的当前显示值似乎调用了点击。
此时我感到难过......
答案 0 :(得分: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();
});
})