1

グリッドビューを使用してasp.net Webサイトで作業しています。

グリッドビューには、SQL データベースからのデータがあります。

お気に入り:

Cuntry----Name
USA--------John
England----Frank

...

データは次のようにグリッド ビューに読み込まれます。

SqlCommand cmd;
        cmd = new SqlCommand();
        cmd.Connection = sqlConn;
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.CommandText = "sp_loadData";
        sqlConn.Open();

        dr = cmd.ExecuteReader();

        DataTable dt = new DataTable();
        dt.Load(dr);
        GridView1.DataSource = dt;
        GridView1.DataBind();

そのため、名前の列にドロップダウンリストが必要です。そして、データベースからの対応する値が選択されたドロップダウンリストが必要です。

これどうやってするの?

ありがとう

4

1 に答える 1

1
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" 
  OnRowDataBound="GridView1_RowDataBound">    
  <Columns>
  <asp:TemplateField HeaderText="Country">
    <ItemTemplate>
      <asp:DropDownList Width="50" runat="server" id="ddlCountry" AutoPostBack="true">
      </asp:DropDownList> 
    </ItemTemplate>
  </asp:TemplateField>
</asp:GridView>

コードビハインドで

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    //Checking whether the Row is Data Row
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        //Finding the Dropdown control.
        Control ctrl = e.Row.FindControl("ddlCountry");
        if (ctrl != null)
        {
            DropDownList dd = ctrl as DropDownList;
            //Here Bind with country list
            dd.DataSource = lst;
            //Put here the object properties name
            dd.DataValueField = "idCountry";
            dd.DataTextField = "nameCountry";
            dd.DataBind();
            //Here add the code to select the current user country in the list
            int idUserCountry = 10;
            dd.Items.FindByValue(idUserCountry).Selected = true;

        }
    }
}
于 2012-09-06T14:17:55.200 に答える