1

GridView の EditItemTemplate で ASP.Net DropDownList コントロールをバインドする必要があります。commandname="Edit" の編集画像ボタンがあります。ドロップダウンは、グリッドがバインドされているテーブル (詳細) ではなく、別のテーブル (ディレクトリ) からバインドする必要があります。

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();
 }

ページは実行されていますが、画像の編集ボタンをクリックすると、ドロップダウンが表示されますが、ドロップダウンにバインドされたデータは空です。私のグリッドビューは更新パネル内にあります。どうすればこれを達成できますか? 私の場合、ドロップダウンリストはrowcommand内にバインドする必要がありますが、どうすればよいですか?

4

4 に答える 4

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
    }
于 2013-09-06T11:35:23.167 に答える
0

ドロップダウンリストをバインドするのを忘れました

DStatusEdit.DataBind();
于 2013-09-06T11:35:32.723 に答える
0

これは役に立つと思います

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"));
}
于 2013-11-07T11:11:38.490 に答える