1

データベースからのdatasiursceを使用してグリッドビューのドロップダウンリストをバインドし、必要に応じて編集および更新したいと考えています。

データソースにはフェッチしたいデータが含まれていますが、バインドされていません

            if (gvItem.Rows.Count > 0)
            {
                for (int i = 0; i < gvItem.Rows.Count; i++)
                {

                    DropDownList sup = (DropDownList)gvItem.Rows[i].FindControl("ddlsup");

                    baplan.Condition = "sup";
                    DataSet dss = new DataSet();
                    dss = baplan.getpro();

                    sup.DataSource = dss;
                    sup.DataBind();
                    sup.DataTextField = "Name";
                    sup.DataValueField = "Id";
                }
            }
4

3 に答える 3

1
if (gvItem.Rows.Count > 0)
    {
        for (int i = 0; i < gvItem.Rows.Count; i++)
        {

            DropDownList sup = (DropDownList)gvItem.Rows[i].FindControl("ddlsup");

            baplan.Condition = "sup";
            DataSet dss = new DataSet();
            dss = baplan.getpro();

            sup.DataSource = dss;

            sup.DataTextField = "Name";
            sup.DataValueField = "Id";
            sup.DataBind();


            }
        }
于 2012-07-14T05:01:01.200 に答える
1

あなたがまだ答えを探している場合、これは詳細な例です:

出力

ここに画像の説明を入力

ASPX

    <asp:GridView runat="server" ID="gridView" AutoGenerateColumns="False" 
        onrowdatabound="gridView_RowDataBound" 
        onrowcancelingedit="gridView_RowCancelingEdit" 
        onrowediting="gridView_RowEditing" onrowupdating="gridView_RowUpdating">
        <Columns>
            <asp:CommandField ShowEditButton="True" />
            <asp:BoundField HeaderText="First Name" DataField="FirstName" />
            <asp:BoundField HeaderText="Last Name" DataField="LastName" />
            <asp:TemplateField HeaderText="Country">
                <ItemTemplate>
                    <asp:Label ID="Label1" runat="server" Text='<%# Eval("Country.Name") %>'></asp:Label>
                </ItemTemplate>
                <EditItemTemplate>
                    <asp:DropDownList runat="server" ID="ddlCountries" DataTextField="Name" DataValueField="ID">
                    </asp:DropDownList>
                </EditItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>

コードビハインド

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!this.IsPostBack)
        {
            this.BindGrid();
        }
    }
    protected void gridView_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        var t = e.Row.RowType;

        if (t == DataControlRowType.DataRow)
        {
            if (this.gridView.EditIndex >= 0 && e.Row.RowIndex == this.gridView.EditIndex)
            {
                var d = e.Row.FindControl("ddlCountries") as DropDownList;
                var em = e.Row.DataItem as Employee;

                d.DataSource = this.GetCountries();
                d.DataBind();

                d.SelectedValue = em.Country.ID.ToString();
            }
        }
    }
    protected void gridView_RowEditing(object sender, GridViewEditEventArgs e)
    {
        this.gridView.EditIndex = e.NewEditIndex;
        this.BindGrid();
    }

    protected void gridView_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
    {
        this.gridView.EditIndex = -1;
        this.BindGrid();
    }

    protected void gridView_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        var row = this.gridView.Rows[e.RowIndex];
        var c = (DropDownList)row.FindControl("ddlCountries");
        var newValue = c.SelectedValue;

        // save the changes

        this.gridView.EditIndex = -1;
        this.BindGrid();
    }
于 2012-07-14T05:48:44.953 に答える