Jer*_*yal 5 c# asp.net data-binding gridview sqldatasource
我正在使用TemplateFieldin从数据库GridView实现edit/delete。
我正在使用控件查询数据SqlDataSource。
当我从页面编辑表格时,出现以下错误:
“DropDownList1”的 SelectedValue 无效,因为它不存在于项目列表中。参数名称:值
这是因为 dB 中的数据与任何国家/DropDownList地区名称都不匹配。
我从这个问题理解了问题(那里没有给出解决方案!)
我认为当我将数据插入 dB 时,它会自动向数据添加冗余空格(例如国家/地区名称)
因此,一种解决方案是从字符串中删除空格(修剪),以便值在其中一项中匹配DropDownList。
因为<asp:DropDownList ID="DropDownList1" runat="server" SelectedValue='<%# Eval("Country")%>'
与 DropDownList 的任何列表项都不匹配
但
<asp:DropDownList ID="DropDownList1" runat="server" SelectedValue='<%# Eval("Country").ToString().Trim()%>'>
Run Code Online (Sandbox Code Playgroud)
与 DropDownList 的列表项匹配。
现在我想将数据更新回数据库,但存储的不是国家/地区名称空值。
(我认为这是 的限制Eval())
Bind()
我可以使用但Bind不支持将数据更新回 dB ToString().Trim(),因此我无法修剪字符串以匹配 DropDownList 中的一项。
如何将数据更新回 dB?
我的原始代码
经过几个小时的摸索之后,我终于找到了解决尾随空格问题的优雅解决方案。
在我的表定义中,在Country字段定义中我使用nchar(100)而不是nvarchar(100). 前者始终有 100 个字符(因此尾随空格),后者最多可以有 100 个字符,但不会填满空格(因此与 中的项目匹配DropDownlist)。
简而言之,<asp:DropDownList ID="DropDownList1" runat="server" SelectedValue='<%# Bind("Country")%>'> 现在工作正常。
我希望它对未来的读者有所帮助。
| 归档时间: |
|
| 查看次数: |
27203 次 |
| 最近记录: |