GridView数据绑定控件和ObjectDataSource数据源控件实现排序功能

<asp:GridView ID="gvMain" runat="server" AutoGenerateColumns="False" CellPadding="4" ForeColor="Black" GridLines="Vertical"
         DataSourceID="odsUsers" BackColor="White" BorderColor="#DEDFDE" BorderStyle="None" BorderWidth="1px" Width="777px" DataKeyNames="Id" AllowPaging="True" PageSize="5" AllowSorting="True" OnSorting="gvMain_Sorting">
            <Columns>
                <asp:CommandField ShowEditButton="True" />
                <asp:BoundField DataField="Id" HeaderText="Id" ReadOnly="True" SortExpression="Id"
                    Visible="False" />
                <asp:BoundField DataField="LoginId" HeaderText="LoginId" ReadOnly="True" SortExpression="LoginId" />
                <asp:BoundField DataField="LoginPwd" HeaderText="LoginPwd" SortExpression="LoginPwd"
                    Visible="False" />
                <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
                <asp:BoundField DataField="Address" HeaderText="Address" SortExpression="Address" />
                <asp:BoundField DataField="Phone" HeaderText="Phone" SortExpression="Phone" />
                <asp:BoundField DataField="Mail" HeaderText="Mail" SortExpression="Mail" />
                <asp:BoundField DataField="UserState" HeaderText="UserState" SortExpression="UserState"
                    Visible="False" />
                <asp:BoundField DataField="UserRole" HeaderText="UserRole" SortExpression="UserRole"
                    Visible="False" />
            </Columns>
            <FooterStyle BackColor="#CCCC99" />
            <RowStyle BackColor="#F7F7DE" />
            <SelectedRowStyle BackColor="#CE5D5A" Font-Bold="True" ForeColor="White" />
            <PagerStyle BackColor="#F7F7DE" ForeColor="Black" HorizontalAlign="Right" />
            <HeaderStyle BackColor="#6B696B" Font-Bold="True" ForeColor="White" />
            <AlternatingRowStyle BackColor="White" />
        </asp:GridView>
        <asp:ObjectDataSource ID="odsUsers" runat="server" SelectMethod="GetAllUsersSort"
            TypeName="MyBookShop.BLL.UserManager" UpdateMethod="ModifyPartUser" DataObjectTypeName="MyBookShop.Models.User">          
            <SelectParameters>
                <asp:Parameter DefaultValue="LoginId" Name="sort" Type="String" />
            </SelectParameters>
        </asp:ObjectDataSource>

 

protected void gvMain_Sorting(object sender, GridViewSortEventArgs e)
    {
        if (ViewState["sort"] == null)
            ViewState["sort"] = "";
        if (ViewState["sort"].ToString() == e.SortExpression)
        {
            odsUsers.SelectParameters["sort"].DefaultValue = e.SortExpression + " desc";
            ViewState["sort"] = e.SortExpression + " desc";
        }
        else
        {
            odsUsers.SelectParameters["sort"].DefaultValue = e.SortExpression;
            ViewState["sort"] = e.SortExpression;
        }
        gvMain.DataBind();
        e.Cancel = true; //设置指示是否应取消事件的值。
    }

 

 public static IList<User> GetAllUsersSort(string sort)
{
            string sql = "SELECT * FROM users order by " + sort;
            return GetUsersBySql(sql);
}

 

 

private static IList<User> GetUsersBySql( string safeSql )
        {
            List<User> list = new List<User>();

   try
   {
    DataTable table = DBHelper.GetDataSet( safeSql );
    
    foreach (DataRow row in table.Rows)
    {
     User user = new User();
     
     user.Id = (int)row["Id"];
     user.LoginId = (string)row["LoginId"];
     user.LoginPwd = (string)row["LoginPwd"];
     user.Name = (string)row["Name"];
     user.Address = (string)row["Address"];
     user.Phone = (string)row["Phone"];
     user.Mail = (string)row["Mail"];
     user.UserState = UserStateService.GetUserStateById((int)row["UserStateId"]); //FK
     user.UserRole = UserRoleService.GetUserRoleById((int)row["UserRoleId"]); //FK
 
     list.Add(user);
    }
 
    return list;
   }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                return null;
            }

        }

 

 

 

posted @ 2010-08-17 18:39  大牛博客  阅读(981)  评论(0编辑  收藏  举报