Private Sub DataGrid1_SortCommand(ByVal source As Object, _
ByVal e As System.Web.UI.WebControls.DataGridSortCommandEventArgs) _
Handles DataGrid1.SortCommand
   DataView1.Sort = e.SortExpression
   DataGrid1.DataBind()
End Sub
在datagridj属性里把可以排序钩了,还有排序表达式也写了,但为什么按页眉就是不能排序呢?后来我用了其它的代码,可以排序,也就证明了差就差在上面代码上。但是看了很多代码,就是写这几行代码啊?。。

解决方案 »

  1.   

    DataView1.Sort = e.SortExpression
       DataGrid1.DataBind()DataGrid1和DataView1有任何关系么??怎么没有体现出来?~~
    DataGrid1绑定到谁身上了?~~需要制定的!率果果~~
      

  2.   

    Dim dv As New DataView(dataTable)
                dv.Sort = "FileDate DESC"            Me.DataList1.DataSource = dv
                Me.DataList1.DataBind()
      

  3.   

    //1.load时读取数据,设定默认值
    private void Page_Load(object sender, System.EventArgs e)
    {
    if(!Page.IsPostBack)
    {
    ViewState["SortExpression"]="";
    ViewState["sort"]="desc";
                      SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]); 
                      SqlDataAdapter da=new SqlDataAdapter("select * from stu,dep where stu.studepid=dep.depid",conn);                   
                      da.Fill(ds); 
                      DataGrid1.DataSource=ds; 
                      DataGrid1.DataBind();  }
    }
    //2.用viewstate来保存dataset,让它不被刷新丢失,
    private DataSet ds
    {
    get
    {
    return ViewState["ds"] as DataSet;
    }
    set
    {
    ViewState["ds"] = value;
    }
    }
    //3.排序事件中处理
    private void DataGrid1_SortCommand(object source, DataGridSortCommandEventArgs e)
    {
    string sort=string.Empty;
    if(ViewState["SortExpression"].ToString()==e.SortExpression.ToString())
    {
    if(ViewState["sort"].ToString()=="asc")
    {
    sort="desc";
    }
    else
    {
    sort="asc";
    }
    }
    else
    {
    if(ViewState["sort"].ToString()=="asc")
    {
    sort="desc";
    }
    else
    {
    sort="asc";
    }
    }
    ViewState["sort"]=sort;
    ViewState["SortExpression"]=e.SortExpression;
    DataView dv=new DataView(ds.Tables[0],null,e.SortExpression+" "+sort,DataViewRowState.CurrentRows);
    DataGrid1.DataSource=dv;
    DataGrid1.DataBind();
    }
      

  4.   

    看微软的示例程序,和你的程序可否有不同之处?void Sort_Grid(Object sender, DataGridSortCommandEventArgs e)

    DataTable dt = (DataTable)Session["Source"];
    DataView dv = new DataView(dt); dv.Sort = e.SortExpression;
    ItemsGrid.DataSource = dv;
    ItemsGrid.DataBind();
    }注意:它里面是指定DV的排序方式,但同时又把它做为数据源,你上面的DataView1是页面级变量吗?如果不是,你设定了它的排序,跟后面的绑定又有何关系?
      

  5.   

    private void DataGrid1_ItemCreated(object sender, DataGridItemEventArgs e)
    {
    string sortExpression = (string)ViewState["SortExpression"];
    for (int i=0; i < DataGrid1.Columns.Count; i++)
    {
    if (i == 0) continue;
    if(e.Item.ItemIndex==-1)
    {
    if (DataGrid1.Columns[i].SortExpression == sortExpression)
    {
    TableCell tableCell = e.Item.Cells[i];
    Label label = new Label();
    label.Font.Name = "webdings";
    if(ViewState["sort"].ToString()=="asc")
    {
    label.Text="6";
    }
    else
    {
    label.Text="5";
    }
    label.Width =20;
    tableCell.Controls.Add(label);
    }
    }
    }
    }
      

  6.   

    DataGrid1.DataBind()前面没有指定数据源.
    DataGrid1.DataSource = ?
    DataGrid1.DataBind()