我是 C# 和 .NET 新手,但已经坚持了几天了,我正在使用 MVC 3 (.NET 4.0) Web 应用程序。
我浏览了教程,使用以下代码制作基于 SqlDataSource 的 GridView:
<asp:GridView ID="GridView1" runat="server" AllowPaging="True"
OnPageIndexChanging = "GridView1_PageIndexChanging"
AutoGenerateColumns="False" DataKeyNames="LastName,FirstName"
EnablePersistedSelection="True" SelectedRowStyle-BackColor="Yellow"
DataSourceID="SqlDataSource1" AllowSorting="True" >
<Columns>
<asp:BoundField DataField="LastName" HeaderText="Last Name" ReadOnly="True" SortExpression="LastName" />
<asp:BoundField DataField="FirstName" HeaderText="First Name" ReadOnly="True" SortExpression="FirstName" />
...
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:ApplicationServices %>"
SelectCommand="SELECT * FROM User WHERE [IsDeleted]=0"></asp:SqlDataSource>
但是,当我单击不同的页面时,没有任何反应(看起来像是重新加载了同一页面),但是当我在 Chrome 中的新选项卡中打开时,当我将鼠标悬停在链接“2”上时,它只会打开一个空白页面" 转到第 2 页,显示如下:
javascript:__doPostBack('ctl00$MainContent$GridView1','Page$2')
当我点击标题进行排序时,就像页面一样没有任何反应,链接是这样的:
javascript:__doPostBack('ctl00$MainContent$GridView1','Sort$WindowsUsername')
我还尝试将以下内容放在 aspx 文件顶部:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.master" Inherits="..." %>
<script runat="server">
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
GridView1.DataBind();
}
</script>
同样的问题。当我点击其他页面时,这个函数甚至没有被调用
我是否遗漏了什么?任何帮助表示赞赏!
您必须在 .aspx 中指定
OnPageIndexChanging
的事件,但您没有。应该是:
<asp:GridView ID="GridView1" runat="server" AllowPaging="True"
OnPageIndexChanging = "GridView1_PageIndexChanging"
AutoGenerateColumns="False" DataKeyNames="LastName,FirstName"
EnablePersistedSelection="True" SelectedRowStyle-BackColor="Yellow"
DataSourceID="SqlDataSource1" AllowSorting="True">