Grid排序的问题, 
点击表头排序, 全部分逢上

解决方案 »

  1.   

    1.html代码
    <HTML>
      <HEAD>
            <title>DatagridTest</title>
            <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
            <meta content="C#" name="CODE_LANGUAGE">
            <meta content="JavaScript" name="vs_defaultClientScript">
            <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
            <script language="javascript">
                function fun_option(obj)
                {
                    document.Form1.hiduserid.value=obj.value;
                    alert(obj.value);
                }            
                function chkAll_true()
                {
                    var chkall= document.all["chkAll"];
                    var chkother= document.all["chkExport"];        
                    if(chkother.length>0)
                    {
                        for (var i=0;i<chkother.length;i++)
                        {
                            if(chkall.checked==true)
                            {
                                chkother[i].checked=true;
                            }
                            else
                            {
                                chkother[i].checked=false;
                            }                
                        }
                    }                
                }    
            </script>
    </HEAD>
        <body>
            <form id="Form1" method="post" runat="server">
                <TABLE id="Table1" height="100%" cellSpacing="1" cellPadding="1" width="100%" border="1">
                    <tr height="30">
                        <td><INPUT id="chkAll" onclick="chkAll_true()" type="checkbox">全选/取消</td>
                    </tr>
                    <TR vAlign="top">
                        <TD width="100%"><asp:datagrid id="DataGrid1" runat="server" ForeColor="Black" GridLines="None" CellPadding="2"
                                BackColor="LightGoldenrodYellow" BorderWidth="1px" BorderColor="Tan" AllowSorting="True" AutoGenerateColumns="False"
                                DataKeyField="UserID" OnUpdateCommand="Update" OnCancelCommand="Cancel" OnEditCommand="Edit">
                                <FooterStyle BackColor="Tan"></FooterStyle>
                                <SelectedItemStyle ForeColor="GhostWhite" BackColor="DarkSlateBlue"></SelectedItemStyle>
                                <AlternatingItemStyle BackColor="PaleGoldenrod"></AlternatingItemStyle>
                                <HeaderStyle Font-Bold="True" BackColor="Tan"></HeaderStyle>
                                <Columns>
                                    <asp:TemplateColumn HeaderText="No">
                                        <ItemTemplate>
                                            <INPUT id="radio" type="radio" name="radio" onclick="fun_option(this)" value='<%# DataBinder.Eval(Container.DataItem,"UserID") %>'>
                                        </ItemTemplate>
                                    </asp:TemplateColumn>
                                    <asp:TemplateColumn HeaderText="No"></asp:TemplateColumn>
                                    <asp:TemplateColumn>
                                        <HeaderTemplate>
                                        </HeaderTemplate>
                                        <ItemTemplate>
                                            <INPUT id="chkExport" type="checkbox">
                                        </ItemTemplate>
                                    </asp:TemplateColumn>
                                    <asp:BoundColumn DataField="UserID" SortExpression="UserID" HeaderText="UserID"></asp:BoundColumn>
                                    <asp:TemplateColumn HeaderText="姓名" SortExpression="UserName">
                                        <ItemTemplate>
                                            <%# DataBinder.Eval(Container.DataItem,"UserName") %>
                                        </ItemTemplate>
                                        <EditItemTemplate>
                                            <asp:TextBox id="UserName" Runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"UserName") %>' Width="88px">
                                            </asp:TextBox>
                                        </EditItemTemplate>
                                    </asp:TemplateColumn>
                                    <asp:TemplateColumn HeaderText="省市" SortExpression="province">
                                        <ItemTemplate>
                                            <%# DataBinder.Eval(Container.DataItem,"province") %>
                                        </ItemTemplate>
                                        <EditItemTemplate>
                                            <asp:DropDownList ID="province" Runat="server" OnSelectedIndexChanged="ddlpovince_SelectedIndexChanged" 
     AutoPostBack="True"></asp:DropDownList>
                                        </EditItemTemplate>
                                    </asp:TemplateColumn>
                                    <asp:TemplateColumn HeaderText="县市" SortExpression="city">
                                        <ItemTemplate>
                                            <%# DataBinder.Eval(Container.DataItem,"city") %>
                                        </ItemTemplate>
                                        <EditItemTemplate>
                                            <asp:DropDownList ID="city" Runat="server"></asp:DropDownList>
                                        </EditItemTemplate>
                                    </asp:TemplateColumn>
                                    <asp:TemplateColumn HeaderText="可见否" SortExpression="Enabled">
                                        <ItemTemplate>
                                            <%# DataBinder.Eval(Container.DataItem,"Enabled") %>
                                        </ItemTemplate>
                                        <EditItemTemplate>
                                            <asp:CheckBox ID="chkenabled" Runat="server" Checked='<%# DataBinder.Eval(Container.DataItem,"Enabled") %>'>
                                            </asp:CheckBox>
                                        </EditItemTemplate>
                                    </asp:TemplateColumn>
                                    <asp:EditCommandColumn ButtonType="PushButton" UpdateText="更新" CancelText="取消" EditText="编辑"></asp:EditCommandColumn>
                                </Columns>
                                <PagerStyle HorizontalAlign="Center" ForeColor="DarkSlateBlue" BackColor="PaleGoldenrod"></PagerStyle>
                            </asp:datagrid></TD>
                    </TR>
                    <tr height="30">
                        <td></td>
                    </tr>
                </TABLE>
                <INPUT id="hiduserid" type="hidden" runat="server">
            </form>
        </body>
    </HTML>
      

  2.   

    private void Page_Load(object sender, System.EventArgs e)
            {
                if(!Page.IsPostBack)
                {
                    SortExpression="";
                    sort="desc";
                    DataBind();
                }            
            }
            DataBind#region DataBind
            private void DataBind()
            {
                string sql="select a.UserID,a.UserName,b.province,c.city,a.Enabled,b.provinceID,c.cityID from testgrid a ";
                sql+=" left join povince b on a.Country=b.provinceID";
                sql+=" left join city c on a.State=c.cityID";
                DataSet ds=GetDataSet(sql);
                dt=ds.Tables[0];
                this.DataGrid1.DataSource=dt;
                this.DataGrid1.DataBind();
            }
            #endregion        Web Form Designer generated code#region Web Form Designer generated code
            override protected void OnInit(EventArgs e)
            {
                //
                // CODEGEN: This call is required by the ASP.NET Web Form Designer.
                //
                InitializeComponent();
                base.OnInit(e);
                this.DataGrid1.ItemDataBound+=new DataGridItemEventHandler(DataGrid1_ItemDataBound);
                this.DataGrid1.SortCommand+=new DataGridSortCommandEventHandler(DataGrid1_SortCommand);
                this.DataGrid1.ItemCreated+=new DataGridItemEventHandler(DataGrid1_ItemCreated);
            }
            
            /**//// <summary>
            /// Required method for Designer support - do not modify
            /// the contents of this method with the code editor.
            /// </summary>
            private void InitializeComponent()
            {    
                this.Load += new System.EventHandler(this.Page_Load);            
            }
            #endregion
      

  3.   

    GetDataSet#region GetDataSet
            private DataSet GetDataSet(string sql)
            {
                constring=System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"];
                SqlDataAdapter    sda =new SqlDataAdapter(sql,constring);
                DataSet ds=new DataSet();
                sda.Fill(ds);
                return ds;
            }
            #endregion
            
            DataGrid1_ItemDataBound#region DataGrid1_ItemDataBound
            private void DataGrid1_ItemDataBound(object sender, DataGridItemEventArgs e)
            {
                if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
                {
                    e.Item.Attributes.Add("ondblclick","alert('"+e.Item.Cells[0].Text+"');");
                }
                if (e.Item.ItemType!=ListItemType.Header)
                 {                
                    e.Item.Attributes.Add( "onmouseout","this.style.backgroundColor=\""+e.Item.Style["BACKGROUND-COLOR"]+"\"");
                  e.Item.Attributes.Add( "onmouseover","this.style.backgroundColor=\""+ "#C1D2EE"+"\"");
                    e.Item.Cells[1].Text=Convert.ToString(e.Item.ItemIndex+1);//产生序号
                 }
                if (e.Item.ItemType==ListItemType.Header)
                 {                
                    e.Item.Cells[0].ColumnSpan=2;//合并单元格
                    e.Item.Cells[1].Visible=false;
                 }
                string sqlpovince="select * from povince";
                DataSet dspovince=GetDataSet(sqlpovince);
                if(e.Item.ItemType==ListItemType.EditItem)
                {
                    DropDownList ddlpovince=(DropDownList)e.Item.FindControl("province");
                    ddlpovince.DataSource=dspovince;
                    ddlpovince.DataTextField="province";
                    ddlpovince.DataValueField="provinceID";
                    ddlpovince.DataBind();
                    ddlpovince.Items.FindByValue(Convert.ToString(DataBinder.Eval(e.Item.DataItem,"provinceID"))).Selected=true;
                    if(e.Item.ItemType==ListItemType.EditItem)
                    {
                        if(ddlpovince.SelectedIndex!=-1)
                        {
                            string sqlcity="select * from city where father='"+ddlpovince.SelectedValue+"'";
                            DropDownList ddlcity=(DropDownList)e.Item.FindControl("city");
                            DataSet dscity=GetDataSet(sqlcity);                
                            ddlcity.DataSource=dscity;
                            ddlcity.DataTextField="city";
                            ddlcity.DataValueField="cityID";
                            ddlcity.DataBind();
                            ddlcity.Items.FindByValue(Convert.ToString(DataBinder.Eval(e.Item.DataItem,"cityID"))).Selected=true;
                        }
                    }
                }                
            }        #endregion
      

  4.   

    http://blog.csdn.net/abandonship/archive/2005/11.aspx