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

اضافه کردن رشته های پویا در GridView با DropDownLists در ASP.Net
0 0
اضافه کردن رشته های پویا در GridView با DropDownLists در ASP.Net

با سلام در این مقاله ، بر روی چگونگی ایجاد یک ردیف در GridView با DropDownList در هنگام کلیک کردن بر دکمه ای که در داخل پاورقی GridView قرار دارد نشان داده می شود و موارد منتخب DropDownList در پسز مینه ها را حفظ می کنم.

 منبع ASPX :

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <title>Untitled Page</title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

    <asp:gridview ID="Gridview1" runat="server" ShowFooter="true" AutoGenerateColumns="false">

        <Columns>

        <asp:BoundField DataField="RowNumber" HeaderText="Row Number" />

        <asp:TemplateField HeaderText="Header 1">

            <ItemTemplate>

                <asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="true">

                <asp:ListItem Value="-1">Select</asp:ListItem>

                </asp:DropDownList>

            </ItemTemplate>

        </asp:TemplateField>

        <asp:TemplateField HeaderText="Header 2">

            <ItemTemplate>

                <asp:DropDownList ID="DropDownList2" runat="server" AppendDataBoundItems="true">

                <asp:ListItem Value="-1">Select</asp:ListItem>

                </asp:DropDownList>

            </ItemTemplate>

        </asp:TemplateField>

        <asp:TemplateField HeaderText="Header 3">

            <ItemTemplate>

                <asp:DropDownList ID="DropDownList3" runat="server" AppendDataBoundItems="true">

                <asp:ListItem Value="-1">Select</asp:ListItem>

                </asp:DropDownList>

            </ItemTemplate>

            <FooterStyle HorizontalAlign="Right" />

            <FooterTemplate>

             <asp:Button ID="ButtonAdd" runat="server" Text="Add New Row"

                    onclick="ButtonAdd_Click" />

            </FooterTemplate>

        </asp:TemplateField>

        </Columns>

        </asp:gridview>

    </div>

    </form>

</body>

</html>

در کد بالا،  برخی از ستون های فیلد الگو را تنظیم کرده ایم، به طوری که GridView به طور خودکار یک ردیف از DropDownLists را وقتی یک ردیف جدید اضافه می شود، ایجاد می کند. همچنین دکمه کنترل زیر FooterTemplate را در GridView ستون آخر اضافه کرده ایم .

توجه:

از آنجایی که ما یک کنترل در پایین صفحه GridView اضافه می کنیم، پس مطمئن شوید که ShowFooter را به TRUE در GridView تنظیم کنید.

کد زیر:

در این مثال ما قصد داریم از DropDownLists استفاده کنیم . توجه داشته باشید که از داده های ساختگی استفاده می کنیم و فقط در ذخیره آن در ArrayList است.  

   private ArrayList GetDummyData()

    {

        ArrayList arr = new ArrayList();

        arr.Add(new ListItem("Item1", "1"));

        arr.Add(new ListItem("Item2", "2"));

        arr.Add(new ListItem("Item3", "3"));

        arr.Add(new ListItem("Item4", "4"));

        arr.Add(new ListItem("Item5", "5"));

        return arr;

    }

 

    private void FillDropDownList(DropDownList ddl)

    {

        ArrayList arr = GetDummyData();

        foreach (ListItem item in arr)

        {

            ddl.Items.Add(item);

        }

    }

 

    private void SetInitialRow()

    {

        DataTable dt = new DataTable();

        DataRow dr = null;

 

        //Define the Columns

        dt.Columns.Add(new DataColumn("RowNumber", typeof(string)));

        dt.Columns.Add(new DataColumn("Column1", typeof(string)));

        dt.Columns.Add(new DataColumn("Column2", typeof(string)));

        dt.Columns.Add(new DataColumn("Column3", typeof(string)));

 

        //Add a Dummy Data on Initial Load

        dr = dt.NewRow();

        dr["RowNumber"] = 1;

        dt.Rows.Add(dr);

 

        //Store the DataTable in ViewState

        ViewState["CurrentTable"] = dt;

        //Bind the DataTable to the Grid

        Gridview1.DataSource = dt;

        Gridview1.DataBind();

       

        //Extract and Fill the DropDownList with Data

        DropDownList ddl1 = (DropDownList)Gridview1.Rows[0].Cells[1].FindControl("DropDownList1");

        DropDownList ddl2 = (DropDownList)Gridview1.Rows[0].Cells[2].FindControl("DropDownList2");

        DropDownList ddl3 = (DropDownList)Gridview1.Rows[0].Cells[3].FindControl("DropDownList3");

        FillDropDownList(ddl1);

        FillDropDownList(ddl2);

        FillDropDownList(ddl3);

 

    }

    private void AddNewRowToGrid()

    {

 

        if (ViewState["CurrentTable"] != null)

        {

            DataTable dtCurrentTable = (DataTable)ViewState["CurrentTable"];

            DataRow drCurrentRow = null;

 

            if (dtCurrentTable.Rows.Count > 0)

            {

                drCurrentRow = dtCurrentTable.NewRow();

                drCurrentRow["RowNumber"] = dtCurrentTable.Rows.Count + 1;

                //add new row to DataTable

                dtCurrentTable.Rows.Add(drCurrentRow);

                //Store the current data to ViewState

                ViewState["CurrentTable"] = dtCurrentTable;

 

                for (int i = 0 ; i < dtCurrentTable.Rows.Count - 1; i++)

                {

                    //extract the DropDownList Selected Items

                    DropDownList ddl1 = (DropDownList)Gridview1.Rows[i].Cells[1].FindControl("DropDownList1");

                    DropDownList ddl2 = (DropDownList)Gridview1.Rows[i].Cells[2].FindControl("DropDownList2");

                    DropDownList ddl3 = (DropDownList)Gridview1.Rows[i].Cells[3].FindControl("DropDownList3");

 

                    // Update the DataRow with the DDL Selected Items

                    dtCurrentTable.Rows[i]["Column1"] = ddl1.SelectedItem.Text;

                    dtCurrentTable.Rows[i]["Column2"] = ddl2.SelectedItem.Text;

                    dtCurrentTable.Rows[i]["Column3"] = ddl3.SelectedItem.Text;

 

                }

 

                //Rebind the Grid with the current data

                Gridview1.DataSource = dtCurrentTable;

                Gridview1.DataBind();

            }

        }

        else

        {

            Response.Write("ViewState is null");

        }

 

        //Set Previous Data on Postbacks

        SetPreviousData();

    }

 

    private void SetPreviousData()

    {

        int rowIndex = 0;

        if (ViewState["CurrentTable"] != null)

        {

            DataTable dt = (DataTable)ViewState["CurrentTable"];

            if (dt.Rows.Count > 0)

            {

                for (int i = 0; i < dt.Rows.Count; i++)

                {

                    //Set the Previous Selected Items on Each DropDownList on Postbacks

                    DropDownList ddl1 = (DropDownList)Gridview1.Rows[rowIndex].Cells[1].FindControl("DropDownList1");

                    DropDownList ddl2 = (DropDownList)Gridview1.Rows[rowIndex].Cells[2].FindControl("DropDownList2");

                    DropDownList ddl3 = (DropDownList)Gridview1.Rows[rowIndex].Cells[3].FindControl("DropDownList3");

 

                    //Fill the DropDownList with Data

                    FillDropDownList(ddl1);

                    FillDropDownList(ddl2);

                    FillDropDownList(ddl3);

 

                    if (i < dt.Rows.Count - 1)

                    {

                        ddl1.ClearSelection();

                        ddl1.Items.FindByText(dt.Rows[i]["Column1"].ToString()).Selected = true;

 

                        ddl2.ClearSelection();

                        ddl2.Items.FindByText(dt.Rows[i]["Column2"].ToString()).Selected = true;

 

                        ddl3.ClearSelection();

                        ddl3.Items.FindByText(dt.Rows[i]["Column3"].ToString()).Selected = true;

                    }

 

                    rowIndex++;

                }

            }

        }

    }

 

    protected void Page_Load(object sender, EventArgs e)

    {

        if (!Page.IsPostBack)

        {

            SetInitialRow();

        }

    }

    protected void ButtonAdd_Click(object sender, EventArgs e)

    {

        AddNewRowToGrid();

    }

تعاریف روشها :

 

GetDummyData

یک روشی است که ArrayList را بازگرداند. اساسا این روش حاوی داده های ساختگی برای پرتاب DropDownList است

FillDropDownList (DropDownList ddl)

یک روشی است که DropDownList را با داده های ساختگی پر می کند.

SetInitialRow

یک روشی است که GridView را در بار اول با یک ردیف داده مرتبط می کند. DataTable که در این روش تعریف شده است در ViewState ذخیره می شود تا در هنگام کپی کردن آن ها بتواند در هر کدام از کدها اشاره شود. اساسا این جدول به عنوان DataSource اصلی برای GridView خدمت خواهد کرد.

AddNewRowToGrid

یک روشی است که سطر جدیدی را به GridView اضافه می کند هنگامی که یک دکمه روی آن کلیک می شود و مقادیر ردیف شده اضافه شده در جدول اصلی که در روش SetInitialRow تعریف شده است ذخیره می شود.

SetPreviousData

یک روشی است که تمام اقلامی را که از DropDownList در هنگام پس گرفتن آن انتخاب شده است را حفظ می کند.


خروجی در زمانی که شما آن را در مرورگر اجرا می کنید، مانند زیر می باشد:

در بار اول:

پس از اضافه کردن چند ردیف:


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

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