Use RowDataBoundEvent to Bind
protected void RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
DropDownList ddlCities = (DropDownList)e.Row.FindControl("ddlCities");
string query = "select distinct city from customers";
SqlCommand cmd = new SqlCommand(query);
ddlCities.DataSource = GetData(cmd);
ddlCities.DataTextField = "city";
ddlCities.DataValueField = "city";
ddlCities.DataBind();
}
}