我的页面是这样子的,上面一部分是DropDownlist控件,下面是Gridview,当选中gridview的时候,上面的DropDownlist控件,显示选中的内容,用下面的代码实现,没有报错.
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
GridViewRow row = GridView1.SelectedRow;
this.txtha03.SelectedItem.Text = HttpUtility.HtmlDecode(row.Cells[4].Text);
}
问题是我发现多选 中几次后,DropDownlist控件下拉框的内容发生了变化,以前是A,B,C,D,多选中几次后, 就变成了,A,A,A,A 真要命,如何不让DropDownlist控件内的内容不受 赋值的影响呢
txtha03.Items.FindByText("A").Selected = true;
txtha03.Items.FindByText(HttpUtility.HtmlDecode(row.Cells[4].Text)).Selected = true;
@子夜一梦:
if(HttpUtility.HtmlDecode(row.Cells[39].Text).Length>1)
{
this.txtha20.Items.FindByText(HttpUtility.HtmlDecode(row.Cells[39].Text)).Selected = true;
}
结果选择每一次OK,每二次就开始报错,提示如下
“/Web”应用程序中的服务器错误。
--------------------------------------------------------------------------------
不能在 DropDownList 中选择多个项。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Web.HttpException: 不能在 DropDownList 中选择多个项。
@zhengyingcan:
呵呵 那就是 要把之前选择的项清理了
test.SelectedItem.Selected = false;
this.txtha20.Items.FindByText(HttpUtility.HtmlDecode(row.Cells[39].Text)).Selected = true;
this.txtha20.SelectedItem.Selected = false;
this.txtha20.Items.FindByText(HttpUtility.HtmlDecode(row.Cells[39].Text)).Selected = true;
不能用SelectedItem.Text,这样会改变当前选中的值,当然会成为你说的那样,你把
this.txtha03.SelectedItem.Text = HttpUtility.HtmlDecode(row.Cells[4].Text);
改为:
this.txtha03.SelectedValue = HttpUtility.HtmlDecode(row.Cells[4].Text);
试试
因为不知道你的DropDownlist中显示的内容和值是不是一样的,所以上面的代码不一定正确
不行,提示“txtha20”有一个无效 SelectedValue,因为它不在项目列表中。
this.txtha03.Items.Insert(0,new ListItem(HttpUtility.HtmlDecode(row.Cells[4].Text;
因为你不能保证gridview对应的项在dropdownlist都可以找到。试试
选择完之后将里面的内容清一下。