1

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?

Silver
  • 443
  • 2
  • 12
  • 33

4 Answers4

1
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
    }
Sasidharan
  • 3,676
  • 3
  • 19
  • 37
  • 2
    Appreciate if you provide the link from where you have taken the accepted answer of – Vaibs_Cool Sep 06 '13 at 11:45
  • Sample took from here (http://stackoverflow.com/questions/12247279/binding-dropdownlist-inside-gridview-edititemtemplate/12258751#12258751) and altered according to vipasha's requirement.. – Sasidharan Sep 06 '13 at 11:49
  • 1
    `// your gridview binding function` Forgot to remove this too ...lol . – Vaibs_Cool Sep 06 '13 at 11:59
0

Your forgot to bind the dropdown list

DStatusEdit.DataBind();
falsetru
  • 357,413
  • 63
  • 732
  • 636
0

I think this is helpful

private void bind_gridview_with_dropdownlist()
{

    DataSet ds = edtcoursedal.Loaddropdown();

    foreach (GridViewRow grdRow in GridView1.Rows)
    {
 DropDownList bind_dropdownlist = (DropDownList)(GridView1.FooterRow.Cells[3].FindControl("drplmaincourse"));
            bind_dropdownlist.DataSource = ds;
            bind_dropdownlist.DataTextField = "C_name";
            bind_dropdownlist.DataValueField = "MId";
            bind_dropdownlist.DataBind();
        }

    bind_dropdownlist.Items.Insert(0,new ListItem("Select","0"));
}
Dharman
  • 30,962
  • 25
  • 85
  • 135
arun
  • 1
0

protected void GridView2_RowDataBound(object sender, GridViewRowEventArgs e) {

    using (SqlConnection con = new SqlConnection(ConnectionString))
    {
        using (SqlCommand cmd = new SqlCommand("SELECT GatePassNo,PurposeOfVisit FROM VisitorList"))
        {
            cmd.CommandType = CommandType.Text;
            cmd.Connection = con;
            con.Open();
            DropDownList ddlpurposeofvisit = (DropDownList)e.Row.FindControl("ddlpurposeofvisit");
            ddlpurposeofvisit.DataSource = cmd.ExecuteReader();
            ddlpurposeofvisit.DataTextField = "PurposeOfVisit";
            ddlpurposeofvisit.DataValueField = "GatePassNo";
            ddlpurposeofvisit.DataBind();
            con.Close();
        }
    }

}