I am adding dropdownlist to gridview by program. when i select drowdown item first time it working fine(Event fire only once) but in next time i select another dropdownlist item then my event
(GVDropDownSelectIndexChanged) fire twice (n times according to previous selected dropdown). below is my code. can any body give me solution to this problem.
thanx in advanced.
My Code
public void PopulateGridViewDetails()
{
int row1 = 0;
foreach (GridViewRow rows in GridView1.Rows)
{
for (int cCount = 0; cCount < dataTable.Columns.Count; cCount++)
{
if (cCount < 3)
{
Label l = new Label();
l.ID = "gvlbl" + dataTable.Columns[cCount].ColumnName;
l.Text = dataTable.Rows[row1][cCount].ToString();
if (l.ID == "gvlblTarineeId")
{
l.Visible = true;
}
if (cCount == 0)
{
GridView1.HeaderRow.Cells[cCount].Visible = false;
rows.Cells[cCount].Visible = false;
}
rows.Cells[cCount].Controls.Add(l);
}
else
{
if (dataTable.Columns[cCount].ColumnName.ToLower().Contains("status"))
{
DropDownList ddlStatus = new DropDownList();
ddlStatus.ID = "ddl" + dataTable.Columns[cCount].ColumnName + "_" + row1;
ddlStatus.DataSource = new StudentExamStatusDAO().GetExamStatusList();
ddlStatus.DataTextField = "Status";
ddlStatus.DataValueField = "Id";
ddlStatus.DataBind();
ddlStatus.Items.Add(new ListItem("--Select Status--", "0"));
ddlStatus.SelectedValue = "0";
ddlStatus.SelectedIndexChanged += new EventHandler(GVDropDownSelectIndexChanged);
ddlStatus.AutoPostBack = true;
rows.Cells[cCount].Controls.Add(ddlStatus);
GridView1.HeaderRow.Cells[cCount].Text = "";
}
else
{
TextBox t = new TextBox();
t.ID = "gvtxt" + dataTable.Columns[cCount].ColumnName;
rows.Cells[cCount].Controls.Add(t);
Label lID = new Label();
lID.ID = "gvlbl" + dataTable.Columns[cCount].ColumnName + "Id";
lID.Text = dataTable.Rows[row1][cCount].ToString();
lID.Visible = false;
rows.Cells[cCount].Controls.Add(lID);
}
}
}
row1++;
}
}
My Event which is fired n times (according to previous dropdownlist selection)
protected void GVDropDownSelectIndexChanged(object sender, EventArgs e)
{
}
Is there any sequencing problem.
i Load gridview Data from pageLoad event without checking IsPostback property
protected void Page_Load(object sender, EventArgs e)
{
try
{
if (!IsPostBack)
{
}
PopulateGridViewDetails();
}
catch (Exception)
{
throw;
}
}
and is there any other way to achieve this stuff (prevent other controls event)?