C#从gridview asp net中的下拉列表中获取选定值

每当gridview中的下拉列表更改其值时,如何更改文本框的值?

在页面加载时,文本框显示所选值,但是当我更改下拉列表的选择时,文本框值不会更改。

代码如下。

              

背后的代码如下。

 protected void ddl1_load(object sender, EventArgs e) { if (!IsPostBack) { DataTable dt = new DataTable(); Duty dy = new Duty(); dt = dy.getdutyid(Convert.ToInt32(dropcontractid.SelectedValue)); DropDownList ddl = (DropDownList)sender; ddl.DataSource = dt; ddl.DataTextField = "dutyid"; ddl.DataValueField = "dutyid"; ddl.DataBind(); TextBox1.Text = ddl.SelectedValue; } } 

您需要使用SelectedIndexChanged处理程序来显示所选值:

标记:

  

代码隐藏:

 protected void duty_SelectedIndexChanged(object sender, EventArgs e) { GridViewRow gvr = (GridViewRow)(((Control)sender).NamingContainer); DropDownList duty= (DropDownList) gvr.FindControl("duty"); TextBox1.Text = duty.SelectedItem.Value; } 

我在GridView使用DropDownLists遇到了类似的问题。 我的解决方案是为下拉列表调整onLoad ,以便它不会在每个post上重写DropDownList 。 这样,如果有什么东西那么它就不会重新填充它。

 protected void dropDownLoad(object sender, EventArgs e) { DropDownList dropDown = sender as DropDownList; if (dropDown.SelectedValue == null || dropDown.SelectedValue == "") { // Your Code to populate table } } 

您应该考虑使用数据绑定。 您可以将textbox.Text绑定到selecteditem.value,这将确保进行正确的更新

这发生在我身上然后我这样编码…但我没有使用onLoad属性,告诉我这是否有效,