如何根据选中的表格行修改DropDownList的DataTextField显示文本?
问题解决:ASP.NET中根据GridView选中行修改DropDownList显示文本
问题分析
你当前的代码错误在于误用了DataTextField属性——这个属性是用来配置DropDownList绑定数据源时,指定数据源中作为显示文本的字段名称,不是用来直接设置控件当前显示的文本。直接给它赋值单元格文本不会达到修改显示内容的效果。
正确实现方案
根据你的需求,分两种场景给出代码:
场景1:DropDownList已绑定数据源,需选中对应文本的选项
如果DropDownList的选项列表已经存在,只需要找到匹配选中行文本的选项并设置选中状态:
// 处理部门下拉框 string deptText = grdRecentCases.SelectedRow.Cells[1].Text; ListItem deptItem = drpDepartment.Items.FindByText(deptText); if (deptItem != null) { deptItem.Selected = true; } // 处理负责人下拉框 string chargeText = grdRecentCases.SelectedRow.Cells[2].Text; ListItem chargeItem = drpCharge.Items.FindByText(chargeText); if (chargeItem != null) { chargeItem.Selected = true; }
也可以直接设置Text属性(前提是文本对应的选项存在,控件会自动匹配选中):
drpDepartment.Text = grdRecentCases.SelectedRow.Cells[1].Text; drpCharge.Text = grdRecentCases.SelectedRow.Cells[2].Text;
场景2:DropDownList未绑定数据源,需动态添加选项并显示
如果DropDownList原本没有选项,需要先添加对应文本的选项再设置选中:
// 处理部门下拉框 drpDepartment.Items.Clear(); string deptText = grdRecentCases.SelectedRow.Cells[1].Text; drpDepartment.Items.Add(new ListItem(deptText)); drpDepartment.SelectedIndex = 0; // 处理负责人下拉框 drpCharge.Items.Clear(); string chargeText = grdRecentCases.SelectedRow.Cells[2].Text; drpCharge.Items.Add(new ListItem(chargeText)); drpCharge.SelectedIndex = 0;
补充说明
- 确保GridView的
EnableViewState属性为true,否则回发时SelectedRow可能为空 - 如果单元格文本存在空格或特殊字符,建议使用
Trim()处理后再匹配:grdRecentCases.SelectedRow.Cells[1].Text.Trim()
内容的提问来源于stack exchange,提问作者Xon Version5
相关产品推荐
相关产品推荐

