C# – how to bind ASP.Net DropDownList control in EditItemTemplate of GridView on edit(imagebutton)click

asp.netcgridview

I have requirement to bind ASP.Net DropDownList control in EditItemTemplate of GridView.
I have a edit imagebutton with commandname="Edit"also dropdown needs to be binded from different table(directory) and not the table through which grid is binded(details).

if (e.Row.RowType == DataControlRowType.DataRow && (e.Row.RowState & DataControlRowState.Edit) == DataControlRowState.Edit && GridView1.EditIndex == e.Row.RowIndex)
 {
    DropDownList DStatusEdit = (DropDownList)e.Row.FindControl("DStatusEdit");
    string query = "select distinct status from directory";
    SqlCommand cmd = new SqlCommand(query);
    DStatusEdit.DataSource = GetData(cmd);
    DStatusEdit.DataTextField = "status";
    DStatusEdit.DataValueField = "status"; DStatusEdit.DataBind();     
    DataStatusEdit.DataBind();
 }

the page is running but when i click edit image button the dropdwn shows but no data in dropdown binded it is empty.
My gridview is inside update panel.
How can i achieve this?
Should dropdownlist in my case be binded inside rowcommand but how?

Best Answer

protected void gv_RowDataBound(object sender, GridViewEditEventArgs e)
{
   if (e.Row.RowType == DataControlRowType.DataRow)
      {
            if ((e.Row.RowState & DataControlRowState.Edit) > 0)
            {
              DropDownList DStatusEdit= (DropDownList)e.Row.FindControl("DStatusEdit");
              DataTable dt = con.GetData("select distinct status from directory");
              DStatusEdit.DataSource = dt;
              DStatusEdit.DataTextField = "status";
              DStatusEdit.DataValueField = "status";
              DStatusEdit.DataBind();
              DataRowView dr = e.Row.DataItem as DataRowView;
              DStatusEdit.SelectedValue = dr["columnname"].ToString();
            }
       }
    }
 }

    protected void gv_RowEditing(object sender, GridViewEditEventArgs e)
    {
      gv.EditIndex = e.NewEditIndex;
      gridviewBind();// your gridview binding function
    }
Related Topic