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

ساخت یک کنترل پیکربندی سفارشی برای GridView با استفاده از کنترل DropDownList در ASP.Net
0 0
ساخت یک کنترل پیکربندی سفارشی برای GridView با استفاده از کنترل DropDownList در ASP.Net

با سلام در این مقاله توضیح می دهیم چگونه ASP.Net DropDownList همراه با ASP.Net GridView برای صفحه بندی با استفاده از Jump To Page Number انجام دهیم .

بسیاری از موارد زمانی که صفحات بیش از حد وجود دارد، امکان ندارد که تمام شماره صفحهای را به عنوان LinkButtons ذکر کنیم؛ در چنین مواردی DropDownList که تمام اعداد صفحه را برگزیده است یک راه حل مناسب است. بنابراین اجازه دهید این آموزش را شروع کنیم.

کد GridView

ابتدا باید یک کنترل ASP.Net GridView و یک کنترل DropDownList را به صفحه وب Asp.Net بکشید.

<div>

Jump To:

<asp:DropDownList ID="ddlJumpTo" runat="server"

    OnSelectedIndexChanged = "PageNumberChanged" AutoPostBack = "true">

</asp:DropDownList>

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns = "false"

    AllowPaging = "true" PageSize = "10" PagerSettings-Visible = "false">

    <Columns>

        <asp:BoundField DataField="ContactName" HeaderText="Contact Name" />

        <asp:BoundField DataField="City" HeaderText="City" />

        <asp:BoundField DataField="Country" HeaderText="Country" />

        <asp:BoundField DataField="PostalCode" HeaderText="Postal Code" />

    </Columns>

</asp:GridView>

</div>

شما در بالا متوجه شدید صفحه بندی را در GridView فعال کرده اید، اما GridView پیمایشگر به طور پیش فرض نامرئی ساخته شده است زیرا ما به آن نیاز نداریم. همچنین یک DropDownList با AutoPostBack اضافه کرده ایم .

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

برای این آموزش، از Database NorthWind مایکروسافت استفاده می کنیم. شما می توانید آن را با استفاده از لینک زیر دانلود کنید
دانلود NorthWind پایگاه داده
روش ذخیره شده

 از روش ذخیره شده برای دریافت سوابق مشتری از جدول مشتری پایگاه NorthWind استفاده خواهیم کرد.

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE PROCEDURE [dbo].[spx_GetCustomers]

       @TotalRows INT OUTPUT

AS

BEGIN

      SET NOCOUNT ON;

      SELECT ContactName, City, Country, PostalCode

      FROM Customers

      SELECT @TotalRows=COUNT(*)

      FROM CUSTOMERS

END

در بالا  یک پارامتر OUTPUT که برای دریافت تعداد کل رکوردها موجود در جدول پایگاه داده استفاده می شود را اعلام می کنیم.

اتصال GridView

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

C #

private int BindGrid(int CurrentPageNo)

{

    int TotalRows = 0;

    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.Add("@TotalRows", SqlDbType.Int)

                .Direction = ParameterDirection.Output;

    cmd.Connection = con;

    sda.SelectCommand = cmd;

    sda.Fill(dt);

    TotalRows = (int)cmd.Parameters["@TotalRows"].Value;

    GridView1.PageIndex = CurrentPageNo - 1;

    GridView1.DataSource = dt;

    GridView1.DataBind();

    return TotalRows;

}

VB.Net

 Private Function BindGrid(ByVal CurrentPageNo As Integer) As Integer

    Dim TotalRows As Integer = 0

    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.Add("@TotalRows", SqlDbType.Int) _

                        .Direction = ParameterDirection.Output

    cmd.Connection = con

    sda.SelectCommand = cmd

    sda.Fill(dt)

    TotalRows = CInt(cmd.Parameters("@TotalRows").Value)

    GridView1.PageIndex = CurrentPageNo - 1

    GridView1.DataSource = dt

    GridView1.DataBind()       

    Return TotalRows

End Function

تابع بالا پروتکل ذخیره شده را که قبلا ایجاد کرده است، سوابق را به کنترل GridView ASP.Net متصل می کند و ردیف شمارش کل را باز می گرداند.

جمع کردن شماره صفحه DropDownList

روش زیر DropDownList را جمع می کند که اعداد صفحه را نگه دارد .

C #

private void FillJumpToList(int TotalRows)

{

    int PageCount = this.CalculateTotalPages(TotalRows);

    for (int i = 1; i <= PageCount; i++)

    {

        ddlJumpTo.Items.Add(new ListItem(i.ToString(), i.ToString()));

    }

}

VB.Net

Private Sub FillJumpToList(ByVal TotalRows As Integer)

    Dim PageCount As Integer = Me.CalculateTotalPages(TotalRows)

    For i As Integer = 1 To PageCount

        ddlJumpTo.Items.Add(New ListItem(i.ToString(), i.ToString()))

    Next

End Sub

تابع فوق به روش CalculateTotalPages که (در زیر توضیح داده شده است) را فراخوانی می کند تا تعداد کل صفحات و سپس شماره صفحه DropDownList را بدست آورد .

محاسبه تعداد کل صفحات

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

C #

private int CalculateTotalPages(int intTotalRows)

{

    int intPageCount = 1;

    double dblPageCount = (double)(Convert.ToDecimal(intTotalRows)

                            / Convert.ToDecimal(GridView1.PageSize));

    intPageCount = Convert.ToInt32(Math.Ceiling(dblPageCount));

    return intPageCount;

}

VB.Net

Private Function CalculateTotalPages(ByVal intTotalRows As Integer) As Integer

   Dim intPageCount As Integer = 1

   Dim dblPageCount As Double = CDbl((Convert.ToDecimal(intTotalRows) _

                            / Convert.ToDecimal(GridView1.PageSize)))

   intPageCount = Convert.ToInt32(Math.Ceiling(dblPageCount))

   Return intPageCount

End Function


مدیریت تغییر صفحه

 تغییر صفحه با استفاده از رویداد OnSelectedIndexChanged از کنترل ASP.Net DropDownList انجام می شود که متصل کننده رویداد زیر است :

C #

protected void PageNumberChanged(object sender, EventArgs e)

{

    int PageNo = Convert.ToInt32(ddlJumpTo.SelectedItem.Value);

    this.BindGrid(PageNo);

}

VB.Net

Protected Sub PageNumberChanged(ByVal sender As Object, ByVal e As EventArgs)

   Dim PageNo As Integer = Convert.ToInt32(ddlJumpTo.SelectedItem.Value)

   Me.BindGrid(PageNo)

End Sub

رویداد PageLoad

در نهایت برای رویداد بارگذاری صفحه ASP.Net دو کار انجام می شود :

1. GridView را جمع آوری می کند

2. شماره صفحه DropDownList را جمع می کند

C #

protected void Page_Load(object sender, EventArgs e)

{

    if (!IsPostBack)

    {

        int TotalRows = this.BindGrid(1);

        this.FillJumpToList(TotalRows);

    }

}

VB.Net

Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load

  If Not IsPostBack Then

        Dim TotalRows As Integer = Me.BindGrid(1)

        Me.FillJumpToList(TotalRows)

  End If

End Sub


تصویر زیر کارهای کنترل GridView ASP.Net را با استفاده از پرش به شماره صفحه با استفاده از کنترل DropDownList توصیف می کند.

 


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

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