Click here to Skip to main content
15,898,035 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hi all,

I created a dynamic Gridview to display data in asp.net, in ItemTemplate i used Lables to display values of all fields, in EditItemTemplate i used Dropdownlist for last six columns.Possible values of dropdownlist are as follows:
DropDownList ddl = new DropDownList();
           ddl.Items.Add(new ListItem("YES", "YES"));
           ddl.Items.Add(new ListItem("NO", "NO"));
           ddl.Items.Add(new ListItem("N/A", "N/A"));


After clickin Edit button in Gridview dropdownlists are displaying with actual selectedvalues so there is no problem here at all, after that i am changing the dropdowlist value as "YES" from "NO", then i am clicking Update link button in Gridview, in RowUpdating event of Gridview i am capturing the dropdownlist SelectedValues to update corresponding tabel in sql server.

The problem is here only that is dropdownlist selectdvalue property have the "NO" value eventhough i selected "YES".

here code for Dynamic Gridview and dynamic Lable,Dropdownlist as follows:

public class GridViewTemplate:System.Web.UI.Page, ITemplate
    {
        public int iRowCount;
        public int iColumnCount;
        ListItemType templateType;
        int i;
        int j;
        static string [] vColName=new string [15];
        static object[,] values = new object[200, 200];
        static int colNo = 0;
        static int rowNo = 0;
        public GridViewTemplate(ListItemType type, string colvalue, int colsno, int rowsno, int dtrows, int dtcols,string ColName)
        {
            templateType = type;
            i= colsno;
            j = rowsno;                   
            if (colvalue == "")
            {
                values[j, i] = "N/A";
            }
            else
            {
                values[j, i] = colvalue;
            }                    
            iRowCount = dtrows;
            iColumnCount = dtcols;
            vColName[i] = ColName;
        }
        public  void InstantiateIn(System.Web.UI.Control container)
        {
            Literal lc = new Literal();
            Label lbl = new Label();
            LinkButton lb = new LinkButton();
            DropDownList ddl = new DropDownList();            
            ddl.Items.Add(new ListItem("YES", "YES"));
            ddl.Items.Add(new ListItem("NO", "NO"));
            ddl.Items.Add(new ListItem("N/A", "N/A"));
           
            switch (templateType)
            {
                case ListItemType.Header:
                    lb.Text = "Edit";
                    lb.CommandName = "EditButton";
                    container.Controls.Add(lb);
                    container.Controls.Add(lc);
                    break;
                case ListItemType.Item:                        
                    
                    while (rowNo < iRowCount)
                    {
                        while (colNo < iColumnCount)
                        {                            
                            lbl.Text = Convert.ToString(values[rowNo, colNo]);
                            colNo++;
                            break;
                        }
                        if (colNo >= iColumnCount)
                        {
                            rowNo++;
                            colNo = 0;
                        }
                        if (rowNo >= iRowCount)
                        {
                            rowNo = 0;
                        }
                        break;
                    }
                    container.Controls.Add(lbl);
                (ckh);
                    break;
                case ListItemType.EditItem:
                                      while (rowNo < iRowCount)
                    {
                        while (colNo < iColumnCount)
                        {
                            string fielddata = Convert.ToString(values[rowNo, colNo]);
                            if (fielddata == "NO" | fielddata == "YES" | fielddata =="N/A")
                            {
                                if (colNo >= 7)
                                { ddl.ID ="ddl"+ vColName[colNo]; }
                                 ddl.SelectedValue = Convert.ToString(fielddata);
                                if (ddl.SelectedValue == "N/A")
                                    ddl.Enabled = Convert.ToBoolean("false");
                                container.Controls.Add(ddl);
                            }
                            else
                            {
                                if (colNo < 7)
                                { lbl.ID = "lbl"+ vColName[colNo]; }
                                lbl.Text = Convert.ToString(fielddata);
                                container.Controls.Add(lbl);
                            }
                            colNo++;
                            break;
                        }
                        if (colNo >= iColumnCount)
                        {
                            rowNo++;
                            colNo = 0;
                        }
                        if (rowNo >= iRowCount)
                        {
                            rowNo = 0;
                        }
                        break;
                    }
                        break;
                case ListItemType.Footer:                   
                    container.Controls.Add(lc);
                    break;
            }
        }
    }
}


Here is the code for Gridview_RowUpdating

protected void gvVendorSupportDocuments_RowUpdating(object sender, GridViewUpdateEventArgs e)
       {
           Getdata();
           SupportDocumentsForVerdorPersistence sdvpUpdateSuppDoct = new SupportDocumentsForVerdorPersistence();
           GridViewRow row = gvVendorSupportDocuments.Rows[e.RowIndex];
           DataSet dsVendorSD = new DataSet();
           dsVendorSD = ((DataSet)ViewState["VendorSupportDocuments"]);
           for (int i = 0; i < dsVendorSD.Tables[0].Columns.Count; i++)
           {
               if (i <= 6)
               {
                   field_value =((Label )row .FindControl("lbl" + dsVendorSD.Tables[0].Columns[i].ColumnName)).Text;
                   ParameterArray.Add(field_value);
               }
               if (i > 6)
               {
                   DropDownList ddldoct = (DropDownList)row.FindControl("ddl" + dsVendorSD.Tables[0].Columns[i].ColumnName);
          field_value = ddldoct.SelectedValue .ToString();                    //field_value =Convert .ToString (((DropDownList)row.FindControl("ddl" + dsVendorSD.Tables[0].Columns[i].ColumnName)).SelectedItem   );
                   ParameterArray.Add(field_value);
               }
           }

Please anybody help me.
Thanks in Advance
Uday
Posted

1 solution

Try using if(!IsPostBack) in your RowUpdating event
 
Share this answer
 
Comments
udaysimha 4-Oct-11 4:42am    
Hi Syed salman

Thanks for your`s reply,i tryed the way you suggested but it`s not working and RowUpdating event is not executing.

here we are clicking Update link button that means it is postback. please can you give me some more Suggestions about this.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900