在 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 发布的新手,所以我可能只需要稍微调整一下。哦,还有 1 件事。如果我手动刷新页面,它将显示我请求的新的正确更改。或者,如果我单步执行代码,它在执行时也会显示代码一切都是准确的,只是最终没有正确显示。