توضیحات و دانلود

ویژگی AutoFilter مانند اکسل باکنترل GridView در ASP.Net
0 0
ویژگی AutoFilter مانند اکسل باکنترل GridView در ASP.Net

با سلام در این مقاله  با مثال نحوه ساخت اکسل مانند ویژگی AutoFilter در کنترل GridView ASP.Net با استفاده از C # و VB.Net توضیح خواهیم داد .
در فایل اکسل، تابع فیلتر خودکار در ردیف سرصفحه کار می کند و از این رو در این مقاله نحوه قرار دادن کنترل DropDownList داخل GridView Header و سپس سوابق GridView با استفاده از DropDownList در ASP.Net با استفاده از C # و VB.Net فیلتر می شود.
بانک اطلاعاتی
در اینجا از پایگاه Northwind مایکروسافت استفاده می کنیم.پایگاه داده Northwind را دانلود کنید
کد HTML
کد HTML شامل کنترل ASP.Net GridView است. یک DropDownList درون HeaderTemplate از کنترل GridView قرار گرفته است.
DropDownList یک پردازنده رویداد SelectedIndexChanged را تعیین کرده و ویژگی AutoPostBack به True تنظیم میکند .

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" AllowPaging="true"
    PageSize="10" Font-Names="Arial" Font-Size="11pt" AlternatingRowStyle-BackColor="#C2D69B"
    HeaderStyle-BackColor="green" OnPageIndexChanging="OnPaging">
    <Columns>
        <asp:BoundField DataField="ContactName" HeaderText="Contact Name" />
        <asp:BoundField DataField="City" HeaderText="City" />
        <asp:TemplateField>
            <HeaderTemplate>
                Country:
                <asp:DropDownList ID="ddlCountry" runat="server" OnSelectedIndexChanged="CountryChanged"
                    AutoPostBack="true" AppendDataBoundItems="true">
                    <asp:ListItem Text="ALL" Value="ALL"></asp:ListItem>
                    <asp:ListItem Text="Top 10" Value="10"></asp:ListItem>
                </asp:DropDownList>
            </HeaderTemplate>
            <ItemTemplate>
                <%# Eval("Country") %>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:BoundField DataField="PostalCode" HeaderText="Postal Code" />
    </Columns>
</asp:GridView>

روش ذخیره شده
روش ذخیره شده زیر برای فیلتر کردن سوابق GridView استفاده می شود. مقدار انتخابی DropDownList به عنوان پارامتر به روش ذخیره شده منتقل خواهد شد.

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE spx_GetCustomers
      @Filter VARCHAR(50)
AS
BEGIN
      SET NOCOUNT ON;
     
      IF @Filter = 'ALL'
            SELECT ContactName, City, Country, PostalCode
            FROM Customers
      ELSE IF @Filter = '10'
            SELECT TOP 10 ContactName, City, Country, PostalCode
            FROM Customers
      ELSE
            SELECT ContactName, City, Country, PostalCode
            FROM Customers WHERE Country=@Filter
END
GO

جمع آوری GridView و DropDownList
جمع آوری GridView
در داخل رویداد بارگذاری صفحه ، روش BindGrid نامیده می شود. در داخل روش BindGrid ، روش ذخیره شده نامیده می شود و مقدار پارامتر Filter به ALL منتقل می شود تا همه سوابق را بارگذاری کند.
جمع آوری DropDownList
DropDownList با استفاده از روش BindCountryList جمع می شود. در داخل روش BindCountryList ، DropDownList داخل HeaderTemplate از GridView با لیست مشخص از کشورها از جدول مشتریان پوشیده شده است.
C #

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        ViewState["Filter"] = "ALL";
        BindGrid();
    }
}
 
private void BindGrid()
{
    DataTable dt = new DataTable();
    String strConnString = System.Configuration.ConfigurationManager
                .ConnectionStrings["conString"].ConnectionString;
    SqlConnection con = new SqlConnection(strConnString);
    SqlDataAdapter sda = new SqlDataAdapter();
    SqlCommand cmd = new SqlCommand("spx_GetCustomers");
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Parameters.AddWithValue("@Filter", ViewState["Filter"].ToString());
    cmd.Connection = con;
    sda.SelectCommand = cmd;
    sda.Fill(dt);
    GridView1.DataSource = dt;
    GridView1.DataBind();
    DropDownList ddlCountry =
        (DropDownList)GridView1.HeaderRow.FindControl("ddlCountry");
    this.BindCountryList(ddlCountry);
}
 
private void BindCountryList(DropDownList ddlCountry)
{
    String strConnString = System.Configuration.ConfigurationManager
                .ConnectionStrings["conString"].ConnectionString;
    SqlConnection con = new SqlConnection(strConnString);
    SqlDataAdapter sda = new SqlDataAdapter();
    SqlCommand cmd = new SqlCommand("select distinct Country" +
                    " from customers");
    cmd.Connection = con;
    con.Open();
    ddlCountry.DataSource = cmd.ExecuteReader();
    ddlCountry.DataTextField = "Country";
    ddlCountry.DataValueField = "Country";
    ddlCountry.DataBind();
    con.Close();
    ddlCountry.Items.FindByValue(ViewState["Filter"].ToString())
            .Selected = true;
}

VB.Net

Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
    If Not IsPostBack Then
        ViewState("Filter") = "ALL"
        BindGrid()
    End If
End Sub
 
Private Sub BindGrid()
    Dim dt As New DataTable()
    Dim strConnString As String = System.Configuration.ConfigurationManager _
        .ConnectionStrings("conString").ConnectionString
    Dim con As New SqlConnection(strConnString)
    Dim sda As New SqlDataAdapter()
    Dim cmd As New SqlCommand("spx_GetCustomers")
    cmd.CommandType = CommandType.StoredProcedure
    cmd.Parameters.AddWithValue("@Filter", ViewState("Filter"))
    cmd.Connection = con
    sda.SelectCommand = cmd
    sda.Fill(dt)
    GridView1.DataSource = dt
    GridView1.DataBind()
    Dim ddlCountry As DropDownList = DirectCast(GridView1.HeaderRow _
        .FindControl("ddlCountry"), DropDownList)
    Me.BindCountryList(ddlCountry)
End Sub
 
Private Sub BindCountryList(ByVal ddlCountry As DropDownList)
    Dim strConnString As String = System.Configuration.ConfigurationManager _
        .ConnectionStrings("conString").ConnectionString
    Dim con As New SqlConnection(strConnString)
    Dim sda As New SqlDataAdapter()
    Dim cmd As New SqlCommand("select distinct Country" & _
                                " from customers")
    cmd.Connection = con
    con.Open()
    ddlCountry.DataSource = cmd.ExecuteReader()
    ddlCountry.DataTextField = "Country"
    ddlCountry.DataValueField = "Country"
    ddlCountry.DataBind()
    con.Close()
    ddlCountry.Items.FindByValue(ViewState("Filter").ToString()) _
        .Selected = True
End Sub

عملکرد خودکار فيلتر
دررویداد SelectedIndexChanged , handler درDropDownList ، سوابق GridView بر اساس مقدار انتخابی DropDownList با تنظیم مقدار متغیر ViewState و مقدار انتخابی DropDownList فیلتر می شوند.
C #

protected void CountryChanged(object sender, EventArgs e)
{
    DropDownList ddlCountry = (DropDownList)sender;
    ViewState["Filter"] = ddlCountry.SelectedValue;
    this.BindGrid();
}

VB.Net

Protected Sub CountryChanged(ByVal sender As Object, ByVal e As EventArgs)
    Dim ddlCountry As DropDownList = DirectCast(sender, DropDownList)
    ViewState("Filter") = ddlCountry.SelectedValue
    Me.BindGrid()
End Sub

مدیریت صفحات GridView
در OnPageIndexChanging رویداد handlerدر GridView، ویژگی PageIndex در GridView به روز می شود که روش BindGrid نامیده می شود.
C #

protected void OnPaging(object sender, GridViewPageEventArgs e)
{
    GridView1.PageIndex = e.NewPageIndex;
    this.BindGrid();
}

VB.Net

Protected Sub OnPaging(sender As Object, e As GridViewPageEventArgs)
    GridView1.PageIndex = e.NewPageIndex
    Me.BindGrid()
End Sub

 


دانلود
  • لینک های دانلود دوره های آموزشی تا پایان دوره قابل دانلود می باشد.
  • برای خارج کردن فایل ها از حالت فشرده از ورژن جدید نرم افزار winrar استفاده کنید.
  • برای خارج کردن فایل ها از حالت فشرده لینک های دانلودی که چندین قسمت می باشند فقط قسمت اول را از حالت فشرده خارج کنید.
  • لطفا توضیحات نوشته شده برای مطالب را با دقت بخوانید.
  • برای نمایش فیلم ها می توانید از نرم افزار هایی مانند Km Player , VLC Player یا Media Player Classic استفاده کنید.

ارسال نظر
ارسال پیام به :