مرتب نمودن گریدویو در ASP.net

در این مقاله از یک GridView و رویداد مرتب نمودن آن استفاده خواهیم کرد. سپس کدهایی برای رویداد مرتب کردن بر اساس حروف الفبا انجام نوشته می شود.

مرتب نمودن گریدویو در ASP.net

مراحل کار

گام 1

ساخت بانک اطلاعاتی

یک بانک اطلاعاتی با نام SortingGridView_DB ساخته و یک جدول مانند زیر در آن طراحی می نماییم :

آن را پر می نماییم :

کسانی که وقت کافی برای ساخت بانک و جداول ندارند می توانند فایل نصبی موجود در پوشه ضمیمه را نصب کنند سپس از این قسمت شروع به ساخت پروژه نمایند.

گام 2

ویژوال استادیو را باز کرده و یک پروژه WebForm با نام gridviewsorting_demo ایجاد می نماییم.

بانک اطلاعاتی را به پروژه اضافه می نماییم.

رشته اتصال :
 

            SqlConnection con = new SqlConnection(@"Data Source=.;Initial Catalog=SortingGridView_DB;User ID=sa;Password=123");

گام 3

فایل gridviewsorting_demo.aspx را باز کرده و دیزاین را می سازیم که شامل گریدویو می باشد.

Gridviewsorting_demo.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>  
  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  
<html xmlns="http://www.w3.org/1999/xhtml">  
<head runat="server">  
    <title></title>  
</head>  
<body>  
    <form id="form1" runat="server">  
    <div>  
      
        <table style="width:100%;">  
            <tr>  
                <td>  
                     </td>  
                <td>  
                     </td>  
                <td>  
                     </td>  
            </tr>  
            <tr>  
                <td>  
                     </td>  
                <td>  
                    <asp:GridView ID="GridView1" runat="server" AllowSorting="True"   
                        AutoGenerateColumns="False" BackColor="White" BorderColor="#999999"   
                        BorderStyle="Solid" BorderWidth="1px" CellPadding="3" DataKeyNames="id"   
                        ForeColor="Black" GridLines="Vertical" onsorting="GridView1_Sorting">  
                        <AlternatingRowStyle BackColor="#CCCCCC" />  
                        <Columns>  
                            <asp:TemplateField HeaderText="Id" SortExpression="id">  
                                <%--<EditItemTemplate>  
                                    <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("id") %>'></asp:TextBox>  
                                </EditItemTemplate>--%>  
                                <ItemTemplate>  
                                    <asp:Label ID="Label1" runat="server" Text='<%# Bind("id") %>'></asp:Label>  
                                </ItemTemplate>  
                            </asp:TemplateField>  
                            <asp:TemplateField HeaderText="First Name" SortExpression="fname">  
                                <EditItemTemplate>  
                                    <asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("fname") %>'></asp:TextBox>  
                                </EditItemTemplate>  
                                <ItemTemplate>  
                                    <asp:Label ID="Label2" runat="server" Text='<%# Bind("fname") %>'></asp:Label>  
                                </ItemTemplate>  
                            </asp:TemplateField>  
                            <asp:TemplateField HeaderText="Last Name" SortExpression="lname">  
                                <EditItemTemplate>  
                                    <asp:TextBox ID="TextBox3" runat="server" Text='<%# Bind("lname") %>'></asp:TextBox>  
                                </EditItemTemplate>  
                                <ItemTemplate>  
                                    <asp:Label ID="Label3" runat="server" Text='<%# Bind("lname") %>'></asp:Label>  
                                </ItemTemplate>  
                            </asp:TemplateField>  
                            <asp:TemplateField HeaderText="City" SortExpression="city">  
                                <EditItemTemplate>  
                                    <asp:TextBox ID="TextBox4" runat="server" Text='<%# Bind("city") %>'></asp:TextBox>  
                                </EditItemTemplate>  
                                <ItemTemplate>  
                                    <asp:Label ID="Label4" runat="server" Text='<%# Bind("city") %>'></asp:Label>  
                                </ItemTemplate>  
                            </asp:TemplateField>  
                        </Columns>  
                        <FooterStyle BackColor="#CCCCCC" />  
                        <HeaderStyle BackColor="Black" Font-Bold="True" ForeColor="White" />  
                        <PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" />  
                        <SelectedRowStyle BackColor="#000099" Font-Bold="True" ForeColor="White" />  
                        <SortedAscendingCellStyle BackColor="#F1F1F1" />  
                        <SortedAscendingHeaderStyle BackColor="#808080" />  
                        <SortedDescendingCellStyle BackColor="#CAC9C9" />  
                        <SortedDescendingHeaderStyle BackColor="#383838" />  
                    </asp:GridView>  
                </td>  
                <td>  
                     </td>  
            </tr>  
            <tr>  
                <td>  
                     </td>  
                <td>  
                     </td>  
                <td>  
                     </td>  
            </tr>  
        </table>  
      
    </div>  
    </form>  
        <a href="http://www.barnamenevisan.org">مرجع تخصصی برنامه نویسان</a>

</body>  
</html> 

SortExpression عملیات مرتب سازی را روی فیلدهای ما انجام می دهد.

دیزاین شما مانند زیر خواهد شد :

هنگامی که از SortExpression استفاده می کنید خواهید دید که سر تیتر های (Header Text) گریدویو شامل زیر خط می شوند.

 


گام 4

gridviewsorting_demo.aspx.cs

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;

public partial class _Default : System.Web.UI.Page
{
 
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            refreshdata();
        }

    }
        public void refreshdata()
        {

            SqlConnection con = new SqlConnection(@"Data Source=.;Initial Catalog=SortingGridView_DB;User ID=sa;Password=123");
            SqlCommand cmd = new SqlCommand("select * from tbl_data", con);
            SqlDataAdapter sda = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            sda.Fill(dt);
            GridView1.DataSource = dt;
              GridView1.DataBind();
              ViewState["dirState"] = dt;
              ViewState["sortdr"] = "Asc";
            
        
        }
        protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
        {
            DataTable dtrslt= (DataTable)ViewState["dirState"];
            if (dtrslt.Rows.Count > 0)
            {
                if (Convert.ToString(ViewState["sortdr"]) == "Asc")
                {
                    dtrslt.DefaultView.Sort = e.SortExpression + " Desc";
                    ViewState["sortdr"] = "Desc";
                }
                else
                {
                    dtrslt.DefaultView.Sort = e.SortExpression + " Asc";
                    ViewState["sortdr"] = "Asc";
                }
                GridView1.DataSource = dtrslt;
                GridView1.DataBind(); 
            
               
            }

        }
}

 

خروجی

فایل های ضمیمه