مرتب نمودن گریدویو در ASP.net
جمعه 26 تیر 1394در این مقاله از یک GridView و رویداد مرتب نمودن آن استفاده خواهیم کرد. سپس کدهایی برای رویداد مرتب کردن بر اساس حروف الفبا انجام نوشته می شود.
مراحل کار
گام 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(); } } }
خروجی
- ASP.net
- 2k بازدید
- 3 تشکر