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

Rolodex با فیلتر الفبایی با استفاده از DataList ASP.Net
0 0
Rolodex با فیلتر الفبایی با استفاده از DataList ASP.Net

با سلام  در این مقاله توضیح می دهیم چگونه Rolodex مخاطب را با استفاده از کنترل DataList ASP.Net ایجاد کنیم. Rolodex به شما اجازه می دهد تا مخاطبین خود را براساس حروف الفبا فیلتر کنید،

کد HTML

کد HTML  در زیر داده شده است :

<b>Personal Contacts:</b>

<br /><br />

You are viewing

<asp:Label ID="lblView" runat="server" Text="" />

<table style="width: 440px">

    <tr>

        <td valign="top" width="420px">

            <asp:DataList ID="dlContacts" runat="server" RepeatLayout="Table" RepeatColumns="2"

                CellPadding="2" CellSpacing="2">

                <ItemTemplate>

                    <table cellpadding="2" cellspacing="0" style="width: 200px; height: 100px; border: dashed 2px green;

                        background-color: #C2D69B">

                        <tr>

                            <td colspan="2">

                                <b>

                                    <%# Eval("ContactName") %></b>

                            </td>

                        </tr>

                        <tr>

                            <td colspan="2">

                                <%# Eval("City") %>,

                                <%# Eval("PostalCode") %><br />

                                <%# Eval("Country")%>

                            </td>

                        </tr>

                        <tr>

                            <td>

                                Phone:

                            </td>

                            <td>

                                <%# Eval("Phone")%>

                            </td>

                        </tr>

                        <tr>

                            <td>

                                Fax:

                            </td>

                            <td>

                                <%# Eval("Fax")%>

                            </td>

                        </tr>

                    </table>

                </ItemTemplate>

            </asp:DataList>

        </td>

        <td valign="top">

            <asp:Repeater ID="rptAlphabets" runat="server">

                <ItemTemplate>

                    <asp:LinkButton ID="lnkAlphabet" runat="server" Text='<%#Eval("Value")%>' OnClick="Alphabet_Click"

                        Enabled='<%# Eval("isNotSelected")%>' />

                    <br />

                </ItemTemplate>

            </asp:Repeater>

        </td>

    </tr>

</table>

در بالا متوجه شدید که یک DataList ASP.Net و کنترل تکراری ASP.Net را استفاده کرده ایم .

DataList برای نمایش مخاطبین مورد استفاده قرار می گیرد در حالی که کنترل تکرار کننده برای ایجاد لیست حروف الفبا استفاده می شود.

دو قسمت برای این آموزش وجود دارد.

1. جمع آوری لیست حروف الفبا

2. جمع آوری مخاطبین از پایگاه داده.

جمع آوری لیست حروف الفبا

برای پر کردن لیست الفبا یک کلاس ایجاد کرده ایم که حروف را ذخیره می کند

C #

public class Alphabet

{

    private string _value;

    private bool _isNotSelected;

   

    public string Value

    {

        get

        {

            return _value;

        }

        set

        {

            _value = value;

        }

    }

 

    public bool isNotSelected

    {

        get

        {

            return _isNotSelected;

        }

        set

        {

            _isNotSelected = value;

        }

    }

}

 VB.Net

Public Class Alphabet

    Private _value As String

    Private _isNotSelected As Boolean

 

    Public Property Value() As String

        Get

            Return _value

        End Get

        Set(ByVal value As String)

            _value = value

        End Set

    End Property

 

    Public Property isNotSelected() As Boolean

        Get

            Return _isNotSelected

        End Get

        Set(ByVal value As Boolean)

            _isNotSelected= value

        End Set

    End Property

End Class

دو ویژگی  Value  و isNotSelected وجود دارد . در محل ذخیره شده IsNotSelected مشخص میکند که آیا الفبای آن انتخاب شده است یا خیر. بنابراین به ما کمک می کند تا مشخص کنیم که کدام حروف الفبای در حال حاضر توسط کاربر انتخاب شده است .

روش شرح داده شده در زیر به عنوان لیستی از حروف ساخته شده است که برای مرتب کردن مخاطبین براساس نام اول آنها استفاده می شود .

C #

private void GenerateAlphabets()

{

    List<Alphabet> alphabets = new List<Alphabet>();

    Alphabet alphabet = new Alphabet();

    alphabet.Value = "ALL";

    alphabet.isNotSelected = !alphabet.Value

                .Equals(ViewState["CurrentAlphabet"]);

    alphabets.Add(alphabet);

    for (int i = 65; i <= 90; i++)

    {

        alphabet = new Alphabet();

        alphabet.Value = Char.ConvertFromUtf32(i);

        alphabet.isNotSelected = !alphabet.Value

                .Equals(ViewState["CurrentAlphabet"]);

        alphabets.Add(alphabet);

    }

    rptAlphabets.DataSource = alphabets;

    rptAlphabets.DataBind();

}

VB.Net

Private Sub GenerateAlphabets()

   Dim alphabets As New List(Of Alphabet)()

   Dim alphabet As New Alphabet()

   alphabet.Value = "ALL"

   alphabet.isNotSelected = Not alphabet.Value _

                    .Equals(ViewState("CurrentAlphabet"))

   alphabets.Add(alphabet)

   For i As Integer = 65 To 90

       alphabet = New Alphabet()

       alphabet.Value = [Char].ConvertFromUtf32(i)

       alphabet.isNotSelected = Not alphabet.Value _

                    .Equals(ViewState("CurrentAlphabet"))

       alphabets.Add(alphabet)

   Next

   rptAlphabets.DataSource = alphabets

   rptAlphabets.DataBind()

End Sub

در بالامتوجه شدید که روش حلقه ها و فهرست الفبایی را همراه با مورد ALL انتخاب می کند که به طور پیش فرض انتخاب شده است. بعدها لیست به یک تکرار کننده کنترل ASP.Net متصل می شود. متغیر ViewState برای ذخیره الفبا انتخاب شده است و، به طور پیش فرض ALL ذخیره می شود که به این معنی است که تمام پرونده ها نمایش داده می شوند .

جمع آوری مخاطبین از پایگاه داده

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

دانلود Northwind پایگاه داده

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

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE PROCEDURE [dbo].[spx_GetContacts]

      @Alphabet VARCHAR(10)

AS

BEGIN

      SET NOCOUNT ON;

      IF @Alphabet = 'ALL'

      BEGIN

            SELECT *

            FROM Customers

      END

      ELSE

      BEGIN

            SELECT *

            FROM Customers

            WHERE ContactName LIKE @Alphabet + '%'

      END

END

روش ذخیره شده بسیار ساده است. این پارامتر Alphabet نامیده می شود . اگر الفبای ALL باشد، همه پرونده ها نمایش داده می شوند . سوابق بر اساس الفبای با استفاده از دستور LIKE فیلتر می شوند.

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

C #

private void BindDataList()

{

    string conStr = ConfigurationManager

            .ConnectionStrings["conStr"].ConnectionString;

    SqlConnection con = new SqlConnection(conStr);

    SqlCommand cmd = new SqlCommand("spx_GetContacts");

    cmd.Connection = con;

    cmd.CommandType = CommandType.StoredProcedure;

    cmd.Parameters.AddWithValue("@Alphabet", ViewState["CurrentAlphabet"]);

    con.Open();

    dlContacts.DataSource = cmd.ExecuteReader();

    dlContacts.DataBind();

    con.Close();

 

    if (ViewState["CurrentAlphabet"].ToString().Equals("ALL"))

        lblView.Text = "all Contacts.";

    else

        lblView.Text = "Contacts whose name starts with "

                    + ViewState["CurrentAlphabet"].ToString();

}

VB.Net 

Private Sub BindDataList()

   Dim conStr As String = ConfigurationManager _

                .ConnectionStrings("conStr").ConnectionString

   Dim con As New SqlConnection(conStr)

   Dim cmd As New SqlCommand("spx_GetContacts")

   cmd.Connection = con

   cmd.CommandType = CommandType.StoredProcedure

   cmd.Parameters.AddWithValue("@Alphabet", ViewState("CurrentAlphabet"))

   con.Open()

   dlContacts.DataSource = cmd.ExecuteReader()

   dlContacts.DataBind()

   con.Close()

 

   If ViewState("CurrentAlphabet").ToString().Equals("ALL") Then

       lblView.Text = "all Contacts."

   Else

       lblView.Text = "Contacts whose name starts with " & _

                    ViewState("CurrentAlphabet").ToString()

   End If

End Sub

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

C #

protected void Page_Load(object sender, EventArgs e)

{

    if (!IsPostBack)

    {

        ViewState["CurrentAlphabet"] = "ALL";

        this.GenerateAlphabets();

        this.BindDataList();

    }

}

VB.Net

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

    If Not IsPostBack Then

       ViewState("CurrentAlphabet") = "ALL"

       Me.GenerateAlphabets()

       Me.BindDataList()

    End If

End Sub

در نهایت رویداد زیر را هنگامی که LinkButtons در کنترل تکرار ASP.Net است کلیک می کنیم .

C #

protected void Alphabet_Click(object sender, EventArgs e)

{

    LinkButton lnkAlphabet = (LinkButton)sender;

    ViewState["CurrentAlphabet"] = lnkAlphabet.Text;

    this.GenerateAlphabets();

    this.BindDataList();

}

VB.Net

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

   Dim lnkAlphabet As LinkButton = DirectCast(sender, LinkButton)

   ViewState("CurrentAlphabet") = lnkAlphabet.Text

   Me.GenerateAlphabets()

   Me.BindDataList()

End Sub

همانطور که متوجه می شوید، زمانی که روی LinkButton  کلیک می شود، الفبای انتخاب شده در متغیر ViewState و Repeater و DataList پر شده است.

تصویر زیر Rolodex را نشان می دهد که مخاطبین فیلتر شده با استفاده از حروف را نمایش می دهد .

 

 


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

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