1

我想用来自数据库的datasiursce在gridview中绑定下拉列表,如果需要,我还想编辑和更新它。

数据源包含我要获取的数据,它不绑定

            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 回答
0
 protected void grdAt_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            
          

            DropDownList ddl_GrdDtype = (DropDownList)e.Row.FindControl("ddlGrdDtype");
            Label lbl_grdStatus = (Label)e.Row.FindControl("lblgrdStatus");


            DataTable dt = attBL.DutyTypeMasterDDLBindForAttendance_L();
            if (dt.Rows.Count > 0)
            {
                ddl_GrdDtype.DataSource = dt;
                ddl_GrdDtype.DataValueField = "DutyCode";
                ddl_GrdDtype.DataTextField = "DutyTypeNick";
                ddl_GrdDtype.DataBind();
                ddl_GrdDtype.Items.Insert(0, "Select");
                
            }
            ddl_GrdDtype.SelectedItem.Text = lbl_grdStatus.Text;
        }

    }
于 2021-03-05T11:43:12.540 回答