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

ایجاد کنترل پویا DropDownList در ASP.Net
0 0
ایجاد کنترل پویا DropDownList در ASP.Net

با سلام در این مقاله  که چگونگی ایجاد کنترل پویا DropDownList در asp.net توضیح خواهیم. همچنین حفظ ارزش پیغام های پس زمینه و چگونگی بازبینی کنترل ها بر روی هر پسوند را توضیح می دهیم . علاوه بر این،  چگونگی اتصال پویا رویداد به کنترل DropDownList در asp.net را خواهیم گفت

برای شروع از  یک رویداد PreInit را به صفحه اضافه کرده و کد زیر را به آن اضافه می کنیم .

C #

Panel pnlDropDownList;

protected void Page_PreInit(object sender, EventArgs e)

{

    //Create a Dynamic Panel

    pnlDropDownList = new Panel();

    pnlDropDownList.ID = "pnlDropDownList";

    pnlDropDownList.BorderWidth = 1;

    pnlDropDownList.Width = 300;

    this.form1.Controls.Add(pnlDropDownList);

 

    //Create a LinkDynamic Button to Add TextBoxes

    LinkButton btnAddDdl = new LinkButton();

    btnAddDdl.ID = "btnAddDdl";

    btnAddDdl.Text = "Add DropDownList";

    btnAddDdl.Click += new System.EventHandler(btnAdd_Click);

    this.form1.Controls.Add(btnAddDdl);

   

    //Recreate Controls

    RecreateControls("ddlDynamic", "DropDownList");

}

VB.Net

Private pnlDropDownList As Panel

Protected Sub Page_PreInit(ByVal sender As Object, ByVal e As EventArgs) Handles Me.PreInit   'Create a Dynamic Panel

   pnlDropDownList = New Panel()

   pnlDropDownList.ID = "pnlDropDownList"

   pnlDropDownList.BorderWidth = 1

   pnlDropDownList.Width = 300

   Me.form1.Controls.Add(pnlDropDownList)

 

   'Create a LinkDynamic Button to Add TextBoxes

   Dim btnAddDdl As New LinkButton()

   btnAddDdl.ID = "btnAddDdl"

   btnAddDdl.Text = "Add DropDownList"

   AddHandler btnAddDdl.Click, AddressOf btnAdd_Click

   Me.form1.Controls.Add(btnAddDdl)

 

   'Recreate Controls

   RecreateControls("ddlDynamic", "DropDownList")

End Sub

 در بالا  کنترل های زیر را ایجاد کرده ایم :

  1 ایجاد پنل پویا pnlDropDownList و اضافه کردن آن  به کنترل فرم در صفحه

2. ایجاد LinkButton btnAddDdl پویا  و پیوست  btnAdd_Click به آن و اضافه کردن به کنترل فرم .

3. ایجاد یک تابع به نام RecreateControls

در رویداد Click از LinkButton پویا، رویداد زیر را اضافه می کنیم .

C #

protected void btnAdd_Click(object sender, EventArgs e)

{

    int cnt = FindOccurence("ddlDynamic");

    CreateDropDownList("ddlDynamic-" + Convert.ToString(cnt + 1));

}

VB.Net

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

    Dim cnt As Integer = FindOccurence("ddlDynamic")

    CreateDropDownList("ddlDynamic-" & Convert.ToString(cnt + 1))

End Sub

همانطور که متوجه شدید، دو عمل زیر را می خواهیم :

1. FindOccurence

2. CreateDropDownList

تابع FindOccurence به عنوان نام است و DropDownList پویا در مجموعه Request.Formرخ می دهد . ایده اصلی این است که  شناسه داده شده یک الگوی معمول است که تمام شناسه ها از نوع txtDynamic هستند مانند txtDynamic-1، txtDynamic-2 و غیره.

C #

private int FindOccurence(string substr)

{

    string reqstr = Request.Form.ToString();

    return ((reqstr.Length - reqstr.Replace(substr, "").Length)

                      / substr.Length);

}

VB.Net

Private Function FindOccurence(ByVal substr As String) As Integer

   Dim reqstr As String = Request.Form.ToString()

   Return ((reqstr.Length - reqstr.Replace(substr, "").Length) & _

                                           / substr.Length)

End Function

حالا CreateDropDownList به عنوان نام  برای ایجاد DropDownList پویا استفاده می شودو این تابع ID را به عنوان پارامتر پذیرش می کند

C #

private void CreateDropDownList(string ID)

{

    DropDownList ddl = new DropDownList();

    ddl.ID = ID;

    ddl.Items.Add(new ListItem("--Select--", ""));

    ddl.Items.Add(new ListItem("One", "1"));

    ddl.Items.Add(new ListItem("Two", "2"));

    ddl.Items.Add(new ListItem("Three", "3"));

    ddl.AutoPostBack = true;

    ddl.SelectedIndexChanged += new EventHandler(OnSelectedIndexChanged);

    pnlDropDownList.Controls.Add(ddl);

 

    Literal lt = new Literal();

    lt.Text = "<br />";

    pnlDropDownList.Controls.Add(lt);

}

VB.Net

Private Sub CreateDropDownList(ByVal ID As String)

   Dim ddl As New DropDownList()

   ddl.ID = ID

   ddl.Items.Add(New ListItem("--Select--", ""))

   ddl.Items.Add(New ListItem("One", "1"))

   ddl.Items.Add(New ListItem("Two", "2"))

   ddl.Items.Add(New ListItem("Three", "3"))

   ddl.AutoPostBack = True

   AddHandler ddl.SelectedIndexChanged, AddressOf OnSelectedIndexChanged

   pnlDropDownList.Controls.Add(ddl)

 

   Dim lt As New Literal()

   lt.Text = "<br />"

   pnlDropDownList.Controls.Add(lt)

End Sub

پس از ایجاد یک DropDownList جدید و اضافه کردن موارد ، آن را به رویداد Handler SelectedIndexChanged پیوست کرده  و ویژگی AutoPostBack را تنظیم می کنیم . و در نهایت  آن را به پنل pnlDropDownList اضافه می کنیم

 رویداد SelectedIndexChanged در زیر داده شده است.

C #

protected void OnSelectedIndexChanged(object sender, EventArgs e)

{

    DropDownList ddl = (DropDownList)sender;

    string ID = ddl.ID;

    ClientScript.RegisterClientScriptBlock(this.GetType(), "Alert",

                 "<script type = 'text/javascript'>alert('" + ID  +

                  " fired SelectedIndexChanged event');</script>");

   

    //Place the functionality here

}

VB.Net

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

    Dim ddl As DropDownList = DirectCast(sender, DropDownList)

    Dim ID As String = ddl.ID

 

    'Place the functionality here

    ClientScript.RegisterClientScriptBlock(Me.GetType(), _

    "Alert", "<script type = 'text/javascript'>alert('" & ID _

    & " fired SelectedIndexChanged event');</script>")

End Sub

در حال حاضر  تابع RecreateControls مهمترین است که  تمام DropDownList را در هر پسوند می سازد .

C #

private void RecreateControls(string ctrlPrefix, string ctrlType)

{

    string[] ctrls = Request.Form.ToString().Split('&');

    int cnt = FindOccurence(ctrlPrefix);

    if (cnt > 0)

    {

        for (int k = 1; k <= cnt; k++)

        {

            for (int i = 0; i < ctrls.Length; i++)

            {

                if (ctrls[i].Contains(ctrlPrefix + "-" + k.ToString())

                    && !ctrls[i].Contains("EVENTTARGET"))

                {

                    string ctrlID = ctrls[i].Split('=')[0];

 

                    if (ctrlType == "DropDownList")

                    {

                        CreateDropDownList(ctrlID);

                    }

                    break;

                }

            }

        }

    }

}

VB.Net

Private Sub RecreateControls(ByVal ctrlPrefix As String, ByVal ctrlType As String)

  Dim ctrls As String() = Request.Form.ToString().Split("&"c)

  Dim cnt As Integer = FindOccurence(ctrlPrefix)

  If cnt > 0 Then

      For k As Integer = 1 To cnt

         For i As Integer = 0 To ctrls.Length - 1

             If ctrls(i).Contains((ctrlPrefix & "-") + k.ToString()) _

                  AndAlso Not ctrls(i).Contains("EVENTTARGET") Then

                 Dim ctrlID As String = ctrls(i).Split("="c)(0)

 

                 If ctrlType = "DropDownList" Then

                      CreateDropDownList(ctrlID)

                 End If

                 Exit For

             End If

         Next

     Next

  End If

End Sub

همانطور که در بالا ذکر شده است، ابتدا اولین نوع رشته خاصی را در ddlDynamic در مجموعه Request.Form پیدا میکنیم و سپس از طریق هر آیتم حلقه میکنیم و DropDownList را با استفاده از تابع CreateDropDownList که قبلا توصیف شده است، نگهداری میکنیم.

یکی از مهمترین مواردی که باید اشاره کرداین است  که افراد همیشه هنگام شناسایی آنها، ارائه شناسه های منحصر به فرد برای کنترل های پویا را نادیده میگیرند


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

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