1
Reply

How Add DropDownlist Dynamically in Gridview Without Postback Page

sagar Bhosale

sagar Bhosale

Apr 4 2012 11:59 PM
6.8k
this my aspx page
<%@ Page Language="C#" MasterPageFile="~/Admin/AdminMasterPage.master" AutoEventWireup="true" CodeFile="MailDemo.aspx.cs" Inherits="Admin_MailDemo" Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentAdmin" Runat="Server">
<asp:gridview ID="MailGrid"  runat="server"  ShowFooter="true"  HeaderStyle-CssClass="GridHeadCenter"
                              AutoGenerateColumns="false" OnRowDataBound="MailGrid_RowDataBound">
        <Columns>
      
        <asp:BoundField DataField="RowNumber" HeaderText="Sr.No." />
        <asp:TemplateField HeaderText="Report">
            <ItemTemplate>
                <asp:DropDownList ID="ddlReport" runat="server"
                                 CssClass="DropDown">
                     <asp:ListItem Value="-1">Select</asp:ListItem>
                </asp:DropDownList>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Time Frame">
            <ItemTemplate>
                <asp:DropDownList ID="ddl_TimeFrame" runat="server" CssClass="DropDown">
                                <asp:ListItem Selected="True" Text="Daily Once" Value="D"></asp:ListItem>
                                <asp:ListItem Text="Weekly Once" Value="W"></asp:ListItem>
                                <asp:ListItem Text="Forthnightly" Value="F"></asp:ListItem>
                                <asp:ListItem Text="Monthly Once" Value="M"></asp:ListItem>                               
                                <asp:ListItem Text="Quarterly Once" Value="Q"></asp:ListItem>
                                <asp:ListItem Text="Yearly Once" Value="Y"></asp:ListItem>
                               
                            </asp:DropDownList>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField  HeaderText="Type of Attachement">
            <ItemTemplate>
               <asp:DropDownList ID="ddl_Attachement" runat="server" CssClass="DropDown">
                                <asp:ListItem Selected="True" Text="XLS" Value="XLS"></asp:ListItem>
                                <asp:ListItem Text="PDF" Value="PDF"></asp:ListItem>                         
                            </asp:DropDownList>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Template">
            <ItemTemplate>
              <asp:DropDownList ID="ddlTemplate" runat="server" CssClass="DropDown" DataTextField="TemplateName" DataValueField="TemplateId">
                            </asp:DropDownList>
            </ItemTemplate>
            <FooterStyle HorizontalAlign="Right" />
            <FooterTemplate>
                 <asp:Button ID="ButtonAdd" runat="server"
                             Text="Add New Row" CssClass="SaveButton" Width="100"
                             onclick="ButtonAdd_Click" />
            </FooterTemplate>
        </asp:TemplateField>
        </Columns>
</asp:gridview>
</asp:Content>

----
this is my .cs page
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class Admin_MailDemo : System.Web.UI.Page
{
    Admin ObjAdmin = new Admin();
    Transaction TrObj = new Transaction();
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            SetInitialRow();
        }
    }

    //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);
    //    }
    //}

    public void SetInitialRow()
    {
        //int i;
        //i = 0;
        DataTable dt = new DataTable();
        DataRow dr = null;

        dt.Columns.Add(new DataColumn("RowNumber", typeof(string)));
        dt.Columns.Add(new DataColumn("Column1", typeof(string)));//for DropDownList selected item
        dt.Columns.Add(new DataColumn("Column2", typeof(string)));//for DropDownList selected item
        dt.Columns.Add(new DataColumn("Column3", typeof(string)));//for DropDownList selected item
        dt.Columns.Add(new DataColumn("Column4", typeof(string)));//for DropDownList selected item

        dr = dt.NewRow();
        dr["RowNumber"] =1;
        dr["Column1"] = string.Empty;
        dr["Column2"] = string.Empty;
        dt.Rows.Add(dr);

        //Store the DataTable in ViewState for future reference

        ViewState["CurrentTable"] = dt;

        //Bind the Gridview
        MailGrid.DataSource = dt;
        MailGrid.DataBind();

        //After binding the gridview, we can then extract and fill the DropDownList with Data

        //DropDownList ddlTemplate = (DropDownList)MailGrid.Rows[0].Cells[6].FindControl("ddlTemplate");
        //DropDownList ddlReport = (DropDownList)MailGrid.Rows[0].Cells[3].FindControl("ddlReport");
        //FillDropDownList(ddlTemplate);
        //FillDropDownList(ddlReport);
    }

    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 for future reference

                ViewState["CurrentTable"] = dtCurrentTable;


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

                    //extract the DropDownList Selected Items

                    DropDownList ddlReport = (DropDownList)MailGrid.Rows[i].Cells[1].FindControl("ddlReport");
                    DropDownList ddl_TimeFrame = (DropDownList)MailGrid.Rows[i].Cells[2].FindControl("ddl_TimeFrame");

                    dtCurrentTable.Rows[i]["Column1"] = ddlReport.SelectedItem.Text;
                    dtCurrentTable.Rows[i]["Column2"] = ddl_TimeFrame.SelectedItem.Text;

                   
                    DropDownList ddl_Attachement = (DropDownList)MailGrid.Rows[i].Cells[3].FindControl("ddl_Attachement");
                    DropDownList ddlTemplate = (DropDownList)MailGrid.Rows[i].Cells[4].FindControl("ddlTemplate");

                    // Update the DataRow with the DDL Selected Items

                    dtCurrentTable.Rows[i]["Column3"] = ddl_Attachement.SelectedItem.Text;
                    dtCurrentTable.Rows[i]["Column4"] = ddlTemplate.SelectedItem.Text;

                }

                //Rebind the Grid with the current data to reflect changes
                MailGrid.DataSource = dtCurrentTable;
                MailGrid.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++)
                {

                    DropDownList ddlReport = (DropDownList)MailGrid.Rows[i].Cells[1].FindControl("ddlReport");
                    DropDownList ddl_TimeFrame = (DropDownList)MailGrid.Rows[i].Cells[2].FindControl("ddl_TimeFrame");

                    DropDownList ddl_Attachement = (DropDownList)MailGrid.Rows[i].Cells[3].FindControl("ddl_Attachement");
                    DropDownList ddlTemplate = (DropDownList)MailGrid.Rows[i].Cells[4].FindControl("ddlTemplate");
                    //Fill the DropDownList with Data
                    //FillDropDownList(ddl1);
                    //FillDropDownList(ddl2);

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

                        //Set the Previous Selected Items on Each DropDownList  on Postbacks
                       
                        ddlReport.ClearSelection();
                        ddlReport.Items.FindByText(dt.Rows[i]["Column1"].ToString()).Selected = true;

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


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

                        ddlTemplate.ClearSelection();
                        ddlTemplate.Items.FindByText(dt.Rows[i]["Column4"].ToString()).Selected = true;

                    }

                    rowIndex++;
                }
            }
        }
    }
    protected void ButtonAdd_Click(object sender, EventArgs e)
    {
        AddNewRowToGrid();
    }

    protected void MailGrid_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
        DropDownList ddlTemplate = (DropDownList)e.Row.FindControl("ddlTemplate");
        DropDownList ddlReport = (DropDownList)e.Row.FindControl("ddlReport");
        //DropDownList ddlTemplate = (DropDownList)MailGrid.Rows[0].Cells[6].FindControl("ddlTemplate");
        //DropDownList ddlReport = (DropDownList)MailGrid.Rows[0].Cells[3].FindControl("ddlReport");
            //ListItem Ci = new ListItem("Select", "0");
           // ddlgdCategory.Items.Insert(0, Ci);
            TrObj.FillDropDown(ddlReport, ((DataSet)ObjAdmin.getAdmin("Mail_Report", "")).Tables[0], "MenuName", "MenuId");
            TrObj.FillDropDown(ddlTemplate, ((DataSet)ObjAdmin.Fill_Template("", "")).Tables[0], "TemplateName", "TemplateId");
            //ds = ObjAdmin.Fill_Template(opt, TemplateId);
            //if (ds.Tables[0].Rows.Count > 0)
            //{
            //    ddlTemplate.DataTextField = "TemplateName";
            //    ddlTemplate.DataValueField = "TemplateId";
            //    ddlTemplate.DataSource = ds;
            //    ddlTemplate.DataBind();
       }
          
    }

}
------------

here  i have  added  dropdownllist but page is  postback every time

ho i will avoid page postback after aading  dropdownlist

plz help me

Answers (1)