如何从数据库绑定gridview中的下拉列表,并编辑和更新它

时间:2012-07-14 04:13:01

标签: asp.net sql gridview

我想将gridview中的下拉列表与来自数据库的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.DataTextField = "Name";
                sup.DataValueField = "Id";
                sup.DataBind();


                }
            }

3 个答案:

答案 0 :(得分: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();


            }
        }

答案 1 :(得分:1)

如果您仍在寻找答案,这是一个详细的例子:

输出

enter image description here

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

答案 2 :(得分: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;
        }

    }