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();
ParameterArray.Add(field_value);
}
}
Please anybody help me.
Thanks in Advance
Uday