【发布时间】:2015-11-02 08:13:06
【问题描述】:
我在GridView 中使用TemplateField 从数据库中实现edit/delete。
我正在使用SqlDataSource 控件查询数据。
当我从页面编辑表格时,出现以下错误:
'DropDownList1' 有一个无效的 SelectedValue,因为它确实 项目列表中不存在。参数名称:值
这是由于来自 dB 的数据与任何 DropDownList 国家/地区名称都不匹配。
我从这个question 了解问题(那里没有给出解决方案!)
我认为当我将数据插入 dB 时,它会自动为数据添加冗余空格(如国家/地区名称)
因此,一种解决方案是从 String 中删除空格(Trim),以便在 DropDownList 项目之一中匹配值。
因为<asp:DropDownList ID="DropDownList1" runat="server" SelectedValue='<%# Eval("Country")%>'
不匹配 DropDownList 的任何列表项
但是
<asp:DropDownList ID="DropDownList1" runat="server" SelectedValue='<%# Eval("Country").ToString().Trim()%>'>
匹配 DropDownList 的列表项。
现在我想将数据更新回数据库,但不是存储国家名称空值。
(我觉得是Eval()的局限)
我可以使用 Bind() 将数据更新回 dB
但是Bind 不支持ToString().Trim(),所以我无法修剪字符串以匹配 DropDownList 中的一项。
如何将数据更新回 dB?
我的raw code
【问题讨论】:
-
在将
DataSource设置为GridView之前绑定DropDownList1。显示您的代码,在其中填充 GridView。 -
试试
SelectedItem='<%# Eval("Country").ToString().Trim()%>' -
@user3540365 SelectedItem 没有工作..仍然是空值
-
@A_Sk 你的解决方案解决了我的问题
标签: c# asp.net gridview data-binding sqldatasource