ASP.NET Gridview排序不起作用

ASP.NET Gridview排序不起作用,asp.net,sorting,gridview,Asp.net,Sorting,Gridview,我正在尝试使用asp.net在web应用程序上实现gridview。我遇到了一个问题,当涉及到排序我的数据网格,通过一种方法-我想征求意见。这是我的.aspx文件: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Employee.aspx.cs" Inherits="GridViewDemo1.Employee" %> <!DOCTYPE html> <html xmlns="http://w

我正在尝试使用asp.net在web应用程序上实现gridview。我遇到了一个问题,当涉及到排序我的数据网格,通过一种方法-我想征求意见。这是我的.aspx文件:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Employee.aspx.cs" Inherits="GridViewDemo1.Employee" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
     <asp:GridView 
        ID="grvEmployee" 
        runat="server" 
        AutoGenerateColumns="true"
        BackColor="AliceBlue"
        ForeColor="Goldenrod" 
        BorderColor="YellowGreen"
        BorderStyle="Groove"
        Width="70%"
        CellPadding="3"
        CellSpacing="2" 
        AllowSorting="True"
        OnSorting="GridView1_Sorting" 
        AutoGenerateEditButton="true" 
        AutoGenerateDeleteButton="true" ViewStateMode="Enabled">  


        <RowStyle 
            HorizontalAlign="Center">
        </RowStyle>

        <FooterStyle
            ForeColor="#8C4510"
            BackColor="#F7DFB5">
        </FooterStyle>

        <PagerStyle 
            ForeColor="#8C4510" 
            HorizontalAlign="Center">
        </PagerStyle>

        <HeaderStyle 
            ForeColor="White" 
            Font-Bold="True" 
            BackColor="#A55129">
        </HeaderStyle>

    </asp:GridView>
</div>
</form>
这是我的web.config连接字符串:

  <connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=xxxxxx;Initial Catalog=yyyyyyy;User ID=zzzzz;Password=xxxxxx;" providerName="System.Data.SqlClient" />

gridview得到了正确的填充,我过去常常得到未处理的触发事件排序。但现在,我在尝试对一列进行排序时没有得到任何响应。这是否适用于自动生成的列?在哪里可以指定排序表达式?升序/降序等?

只有在以下情况下,才需要执行初始数据绑定!IsPostback不是在每次连续回发时:

if(!IsPostBack)
{
    string connectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
    string selectSQL = "SELECT * from dbo.[User]";
    SqlConnection con = new SqlConnection(connectionString);
    SqlCommand cmd = new SqlCommand(selectSQL, con);
    SqlDataAdapter adapter = new SqlDataAdapter(cmd);
    DataSet ds = new DataSet();
    adapter.Fill(ds, "Employee");

    grvEmployee.DataSource = ds;
    grvEmployee.DataBind();
}
在GridView1_排序中,您必须从数据库中选择有序数据并将其分配给网格的DataSource属性,然后调用grvEmployee.DataBind:


GridView排序示例:

所以我需要为每个列创建不同的排序方法?此外,当我点击一列时,通过这种编辑,页面完全变为空白。很抱歉给您添麻烦,这在asp.net上是一个新功能。@onlyf:为什么每列有一个方法?您已经在使用e.SortExpression的方法中编写了代码。然而,有很多关于stackoverflow的问题显示了如何使用ASP.NET GridView实现排序。不久前我也提供了一个:看看这个教程:或者
if(!IsPostBack)
{
    string connectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
    string selectSQL = "SELECT * from dbo.[User]";
    SqlConnection con = new SqlConnection(connectionString);
    SqlCommand cmd = new SqlCommand(selectSQL, con);
    SqlDataAdapter adapter = new SqlDataAdapter(cmd);
    DataSet ds = new DataSet();
    adapter.Fill(ds, "Employee");

    grvEmployee.DataSource = ds;
    grvEmployee.DataBind();
}