在aspx页面上的jQuery脚本中,我对UI进行了更改,这些已经反映在数据流中发送到代码隐藏(aspx.vb)的dta变量中。但我不能让他们坚持下去。即使在重新绑定控件之后,页面仍会恢复原始形式。
这是我的脚本:我是一个jQuery初学者......
function btnUpdate() {
var dta = {};
$('#sortable').each(function (i) {
dta['sortable' + (i + 1)] = $(this).text();
});
var data_save = $('#Form1').serializeArray();
data_save.push({ name: "sortable1", value: dta.sortable1});
var frm = $('#Form1');
$.ajax({
type: frm.attr('method'),
cache: false,
url: frm.attr('action'),
data: data_save,
async: false //Tried both ways??
// This success section was added later, on a suggestion, but still does not work.
success: function (data_save) {
$('.result').html(data_save)
}
});
}
<asp:Button ID="btUpdate" runat="server" Text="Update" OnClientClick="btnUpdate();" />
上面脚本中的dta是从ListView控件收集数据。在我使用Pre_render后面的代码中,但我尝试过Page_Load,Load_Complete,Init,这似乎并不重要:
Private Sub Page_PreRender(sender As Object, e As EventArgs) Handles Me.PreRender
If Request.Form("sortable1") <> "" Then
Dim Sortedlist As String = Request.Form("sortable1")
ProcessSortChange(Sortedlist)
BindStudentsRankList() 'This seems to be ignored after it executes. Oh it has the right values
'ddlMatches_SelectedIndexChanged(Me, New System.EventArgs())
End If
End Sub
因此ProcessSortChange是一个更改数据库的例程。此代码已确认有效。断开位于代码隐藏和更新屏幕之间。这是立面的其余部分,或者有问题的面部代码:
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:ListView ID="lvRankList" runat="server" ItemPlaceholderID="itemPlaceholder1">
<ItemTemplate>
<li>
<table>
<tr>
<td>
<%#Eval("SiteCourseID")%>
</td>
<td>
<%# Eval("Rotation")%>
</td>
<td>
<%# Eval("PrimaryPreceptor")%>
</td>
<td>
<%# Eval("ETCategoryName")%>
</td>
<td>
<%#Eval("Rank")%>
</td>
</tr>
</table>
</li>
</ItemTemplate>
<LayoutTemplate>
<div id="container">
<ul id="sortable">
<table class="blue_table" style="font-size: small; border-collapse: collapse;" border="1" rules="all" cellspacing="0">
<tr>
<td>
</td>
</tr>
<asp:Placeholder runat="server" ID="itemPlaceholder1" />
</ul>
</div>
</LayoutTemplate>
</asp:ListView>
<asp:Button ID="btUpdate" runat="server" Text="Update" OnClientClick="btnUpdate();" />
</ContentTemplate>
</asp:UpdatePanel>
当我单击'btnUpdate'时,它会点击脚本中的1)函数... 2)然后在代码隐藏中点击PreRender代码...但是在完成jquery Ajax后页面恢复为原始形式发布周期。
由于我是jQuery发布的新手,所以我可能需要稍微调整一下。哦还有一件事。如果我手动刷新页面,它将显示我请求的新的正确更改。或者,如果我单步执行代码,当它执行时,它也会显示代码的一切准确,但最终却无法正确显示。