请问一下在vs2003里面DataGrid这个控件怎么排序,以前都是用的2005,第一次用2003的,各位帮帮忙!!!

解决方案 »

  1.   

    两种方法,一是,数据库级的,相信你明白我说的。如果非要在页面级排序的话,可以手动写个类实现。即对,数据集排序。还有一种方法,就是借用其它的对像,如2005中的,dataview之类的。里面会有sort。呵呵,
      

  2.   

    我知道如何禁止排序
    因为双击datagrid表头的话,他会自动排序
      

  3.   

      拖一个 DataGrid 属性 常规, 选择 允许排序。然后在 DataGrid1_SortCommand 事件里面写代码;
    ============官方源码==================
    <%@ Import Namespace="System.Data" %>
    <HTML>
    <script runat="server">
     
          ICollection CreateDataSource()
          {
          
             // Create a Random object to mix up the order of items in the
             // sample data.
             Random Rand_Num = new Random();         // Create sample data for the DataGrid control.
             DataTable dt = new DataTable();
             DataRow dr;
     
             // Define the columns of the table.
             dt.Columns.Add(new DataColumn("IntegerValue", typeof(Int32)));
             dt.Columns.Add(new DataColumn("StringValue", typeof(String)));
             dt.Columns.Add(new DataColumn("CurrencyValue", typeof(Double)));
     
             // Populate the table with sample values.
             for (int i=0; i<=8; i++) 
             {            dr = dt.NewRow();
     
                dr[0] = i;
                dr[1] = "Item " + Rand_Num.Next(1, 15).ToString();
                dr[2] = 1.23 * Rand_Num.Next(1, 15);
     
                dt.Rows.Add(dr);
             
             }         // To persist the data source between posts to the server,
             // store it in session state.  
             Session["Source"] = dt;
     
             DataView dv = new DataView(dt);         return dv;
          
          }
     
          void Page_Load(Object sender, EventArgs e)
          { 
     
             // Load sample data only once, when the page is first loaded.
             if (!IsPostBack)
             { 
             
                ItemsGrid.DataSource = CreateDataSource();
                ItemsGrid.DataBind();
             
             }      }      void Sort_Grid(Object sender, DataGridSortCommandEventArgs e)
          {          // Retrieve the data source from session state.
             DataTable dt = (DataTable)Session["Source"];         // Create a DataView from the DataTable.
             DataView dv = new DataView(dt);         // The DataView provides an easy way to sort. Simply set the
             // Sort property with the name of the field to sort by.
             dv.Sort = e.SortExpression;         // Rebind the data source and specify that it should be sorted
             // by the field specified in the SortExpression property.
             ItemsGrid.DataSource = dv;
             ItemsGrid.DataBind();      }      void Check_Change(Object sender, EventArgs e)
          {
       
             // Allow or prevent sorting depending on the user's selection.
             if (AllowSortingCheckBox.Checked)
             {            ItemsGrid.AllowSorting = true;         }
             else
             {            ItemsGrid.AllowSorting = false;         }         // After changing the property, rebind the data to
             // refresh the DataGrid control.         // Retrieve the data source from session state.
             DataTable dt = (DataTable)Session["Source"];         // Create a DataView from the DataTable.
             DataView dv = new DataView(dt);         // Rebind the data source.
             ItemsGrid.DataSource = dv;
             ItemsGrid.DataBind();      } </script>
    <body>
    <form runat="server" ID="Form1">
    <h3>DataGrid AllowSorting Example</h3>
    Select whether to allow sorting in the DataGrid control.
    <br>
    <br>
    <b>Product List</b>
    <asp:DataGrid id="ItemsGrid" BorderColor="black" BorderWidth="1" CellPadding="3" OnSortCommand="Sort_Grid"
    AutoGenerateColumns="False" AllowSorting="True" runat="server">
    <HeaderStyle BackColor="#00aaaa"></HeaderStyle>
    <Columns>
    <asp:BoundColumn DataField="IntegerValue" SortExpression="IntegerValue" HeaderText="Item" />
    <asp:BoundColumn DataField="StringValue" SortExpression="StringValue" HeaderText="Description" />
    <asp:BoundColumn DataField="CurrencyValue" HeaderText="Price" SortExpression="CurrencyValue" DataFormatString="{0:c}">
    <ItemStyle HorizontalAlign="Right"></ItemStyle>
    </asp:BoundColumn>
    </Columns>
    </asp:DataGrid>
    <P>
    <hr>
    <asp:CheckBox id="AllowSortingCheckBox" Text="Allow sorting" AutoPostBack="True" Checked="True"
    OnCheckedChanged="Check_Change" runat="server" />
    <P></P>
    <P>
    <asp:Button id="Button1" runat="server" Text="Button"></asp:Button></P>
    </form>
    </body>
    </HTML>