1)列标题可以在SQL语句中指定:如:select uid as 序号,datatime as 时间....
也可自定义Datagrid的DataGridTableStyle来修改序标题,具体可参考MSDN有详细介绍.2)点击Datagrid的列标题,系统会自动给你排序,无须自己写代码.

解决方案 »

  1.   

    http://www.syncfusion.com/FAQ/WinForms/FAQ_c44c.asp
      

  2.   

    1)参考/// <summary>
    /// 【方法01】:设置DataGrid样式
    /// </summary>
    public static void InitDataGridHeader(DataGrid dg,string[] mColumnsName,string[] mColumnsHeader,float[] mColumnsWidth)
    {
    if(mColumnsName.Length != mColumnsHeader.Length || mColumnsHeader.Length != mColumnsWidth.Length)
    {
    Common.ShowMsg("系统错误:输入参数不正确,请联系系统开发人员");
    return;
    }            bool canSort = dg.AllowSorting; dg.TableStyles.Clear();
    DataGridTableStyle myStyle = new DataGridTableStyle();
    dg.TableStyles.AddRange(new DataGridTableStyle[]{myStyle});
    myStyle.DataGrid = dg; for(int i=0;i<mColumnsName.Length;i++)
    {
    DataGridTextBoxColumn tmpColumn = new DataGridTextBoxColumn();
    tmpColumn.Format = "";
    tmpColumn.FormatInfo = null;
    tmpColumn.HeaderText = mColumnsHeader[i];
    tmpColumn.MappingName = mColumnsName[i];
    tmpColumn.Width  =  Convert.ToInt32(mColumnsWidth[i] * Common.MySettings.myFontSize / 10.5F);
    myStyle.GridColumnStyles.Add(tmpColumn);
    }//end of for(int i=0;i<mColumnsName.Length;i++)

    myStyle.HeaderForeColor = SystemColors.ControlText;
    myStyle.MappingName = dg.DataMember;
    myStyle.AlternatingBackColor = Color.Azure;//Color.SeaShell;
    myStyle.GridLineStyle = DataGridLineStyle.Solid;
    myStyle.GridLineColor = SystemColors.Control;
    myStyle.HeaderBackColor = SystemColors.ControlLight;
    myStyle.HeaderFont = new Font(Common.MySettings.myFontName,9F,FontStyle.Bold, GraphicsUnit.Point, ((System.Byte)(134)));

    dg.Font = Common.MySettings.myFont;
    dg.AllowSorting = canSort;
    dg.TableStyles[0].AllowSorting = canSort;
    dg.ReadOnly = true;
    //dg.CaptionVisible = false;
                
    }2)排需要用上面的方法重新绑定一下就好了,就是控制dg.TableStyles数组元素的顺序
      

  3.   

    [C#] 
     
    //derived class 
     
    public class MyDataGrid : DataGrid 
     

     
         protected override void OnMouseDown(MouseEventArgs e) 
     
         { 
     
              Point pt = new Point(e.X, e.Y); 
     
              DataGrid.HitTestInfo hti = this.HitTest(pt); 
     
              if(hti.Type == HitTestType.ColumnHeader && hti.Column == 1) 
     
              { 
     
                   //don't sort col 1 
     
                   return; //don't call baseclass 
     
              } 
     
              base.OnMouseDown(e); 
     
         } 
     

      
    这个排序有点没明白,重载后怎么使用?
      

  4.   

    拖放 DataGrid 列http://www.microsoft.com/china/MSDN/library/netFramework/netframework/VCSdragdrop_datagrid.mspx
      

  5.   

    to
    net_lover(孟子E章) 那个拖动,哦如何通过程序判断而自动将只有一行的数据根据每个单元格的内容进行排序呢?
    比如:
    n1 n2 n3 n4 n5 n6 n7 n8 n9 n10
    -------------------------------
    12 16 19 8  9  29 31 4  7  1排列后结果如下:
    n10 n8 n9 n4 n5 n1 n2 n3 n6 n7
    -------------------------------
    1   4  7  8  9  12 16 19 29 31?
      

  6.   

    http://www.syncfusion.com/FAQ/WinForms/FAQ_c44c.asp