在这个问题中,我们需要实现一个基于ASP.NET的GridView控件的排序和分页功能。下面是一个简单的实现方法:
<asp:GridView ID="GridView1" runat="server" AllowSorting="True"
AutoGenerateColumns="False" DataKeyNames="ID"
DataSourceID="SqlDataSource1" AllowPaging="True"
PageSize="10">
<Columns>
<asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False" ReadOnly="True" SortExpression="ID" />
<asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
<asp:BoundField DataField="Age" HeaderText="Age" SortExpression="Age" />
<asp:BoundField DataField="Country" HeaderText="Country" SortExpression="Country" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT * FROM [Users]"
SortParameterName="sortExpression"
OnSelecting="SqlDataSource1_Selecting">
</asp:SqlDataSource>
protected void SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
{
string sortExpression = e.SortExpression;
if (!string.IsNullOrEmpty(sortExpression))
{
e.Command.Parameters["@sortExpression"].Value = sortExpression;
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
GridView1.DataSource = GetData();
GridView1.DataBind();
}
}
private DataTable GetData()
{
string connectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
string query = "SELECT * FROM [Users] ORDER BY " + GridView1.SortExpression + " " + GetSortDirection();
SqlConnection connection = new SqlConnection(connectionString);
SqlCommand command = new SqlCommand(query, connection);
SqlDataAdapter adapter = new SqlDataAdapter(command);
DataTable dataTable = new DataTable();
adapter.Fill(dataTable);
return dataTable;
}
private string GetSortDirection()
{
string sortDirection = "ASC";
if (GridView1.SortExpression.EndsWith(" DESC"))
{
sortDirection = "DESC";
}
return sortDirection;
}
这样,我们就实现了基于ASP.NET的GridView控件的排序和分页功能。
领取专属 10元无门槛券
手把手带您无忧上云