【问题标题】:How to bind the Gridview dropdown and how can i get Dropdown select value in asp.net如何绑定 Gridview 下拉列表以及如何在 asp.net 中获取下拉选择值
【发布时间】:2023-04-02 08:56:01
【问题描述】:

我有一个开发 asp.net web 应用程序,当我加载表单时,我有 gridview 控件 gridview hava 填充从 sqlserver 数据库获取的数据。在那个 gridview 中,当我单击编辑表单时,我有下拉列表我有从下拉列表中选择值并保存到数据库中,但下拉值始终采用第一个索引值没有采用所选值请帮助我....我该如何解决这个问题我已经在这里发布了我的代码我做了什么。

    protected void grd_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
            TextBox txt = null;
            TextBox clientpmtdate = null;
            TextBox amt = null;
            TextBox PaymentID = null;
       try
            {
                clientpmtdate = ((TextBox)(grdviewPayments.Rows[e.RowIndex].FindControl("txtEditpmtdate")));
                int ddldmthd = Convert.ToInt32(((DropDownList)(grdviewPayments.Rows[e.RowIndex].FindControl("ddldebitmethodedit"))).SelectedValue);
                int ddlpmtype = Convert.ToInt32(((DropDownList)(grdviewPayments.Rows[e.RowIndex].FindControl("ddlpmttypeedit"))).SelectedValue);
                txt = ((TextBox)(grdviewPayments.Rows[e.RowIndex].FindControl("txtEditmtrsvrdate")));
                amt = ((TextBox)(grdviewPayments.Rows[e.RowIndex].FindControl("txtEditammount")));
                PaymentID = ((TextBox)(grdviewPayments.Rows[e.RowIndex].FindControl("txtEditPaymentID")));

                string clienteditpmtdate = clientpmtdate.Text;
                // string debitmethod = ddldmthd.SelectedItem.Value;
                //string pmttype = ddlpmtype.SelectedItem.Value;
                string txtEditmtrsvrdate = txt.Text;
                string txtEditammount = amt.Text;
                string txtEditPaymentID = PaymentID.Text;
                int pmtid = Convert.ToInt32(txtEditPaymentID);
                string pmtcmnts = txtpmtcmnts.Text;
                if (txtEditPaymentID != null)
                {
                    var Editpmt = (from k in mortgageentity.Payments where k.Pmt_ID == pmtid select k).First();
                    Editpmt.Client_Pmt_Date = Convert.ToDateTime(clienteditpmtdate);
                    Editpmt.MtgSvr_Pmt_Start_Date2 = txtEditmtrsvrdate;
                    Editpmt.Amt = Convert.ToDecimal(txtEditammount);
                    Editpmt.Pmt_Comments = pmtcmnts;
                    Editpmt.Payment_Type_ID = ddlpmtype;
                    Editpmt.Debit_Method_ID = ddldmthd;
                    mortgageentity.SaveChanges();
                }
                grdviewPayments.EditIndex = -1;
                //  bindGrid(e.RowIndex + 1, txt.Text);
                //bindGrid(0, null);
                BindData();
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message);
            }
            finally
            {
                if (txt != null) txt = null;
            }

    }

【问题讨论】:

    标签: asp.net gridview c#-4.0


    【解决方案1】:

    在 RowEditing 中设置下拉列表的索引:

    protected void grdviewPayments_RowEditing(object sender, GridViewEditEventArgs e)
    {
        grdviewPayments.EditIndex = e.NewEditIndex;
    
        GridViewRow editingRow = grdviewPayments.Rows[e.NewEditIndex];
    
        DropDownList ddl = (editingRow.FindControl("ddlS") as DropDownList);
        if (ddl != null)
        {
            //set index
        }
    
    
    }
    

    【讨论】:

    • 嗨..我可以在行编辑中编写所有更新代码来更新数据吗?
    • 我在 onloadevent 上绑定了下拉菜单。 onLoad="ddlpmttypeedit_Click"
    • 按数据源属性进行页面加载??
    • 是的,当页面加载时下拉列表将被加载 .
    【解决方案2】:

    您是否启用 DropdownList 的回发属性? 如果否,则设置 Postback=True 。 你的编码是对的。

    【讨论】:

    • 嗨,感谢您在页面加载事件中做出响应,我已经设置了 if (!Page.IsPostBack){},即使我得到了下拉值的唯一第一个索引。
    • 下拉菜单是静态的还是动态的?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-11
    • 2015-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-24
    • 1970-01-01
    相关资源
    最近更新 更多