Jquery ajax帖子,但asp.net页面不断恢复原状

时间:2013-07-18 10:45:28

标签: jquery asp.net vb.net

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

0 个答案:

没有答案