[英]Dropdownlist data binding inside detailsview in asp.net
我有detailsview将用于编辑客户记录。 在这个detailsview中,我有一个下拉列表,显示了国家列表。
我有一个名为CountryList的表,该表会将国家列表填充到上述下拉列表中。
用户可以编辑和保存数据,没有任何问题。
但是,假设客户记录已将国家/地区选择为“澳大利亚”,并且如果我从CountryList中删除澳大利亚并尝试在详细信息视图中编辑客户,那么我将遇到以下错误。
SelectedValue which is invalid because it does not exist in the list of items
我知道原因是因为
SelectedValue='<%# Bind("Country") %>'
并且在列表中找不到它。
所以我的问题是,如何克服这个问题?
在网上搜索后,我发现可以覆盖Databind,但是不确定如何执行此操作。 不知道如何重写,有人可以给我示例代码吗?
是否还有其他解决方案,例如在设置之前进行验证?
谢谢。
尝试在绑定之前检查列表(dataTable,DataSet等)中国家的存在,例如
DataTable dtPs=getAvailableCountries();
string countryName = "Australia";
DataRow foundRow = dtPs.Rows.Find(countryName);
if(foundRow != null) {
//You have it ...
bindTheDropdown();
}else{
//You dont have it ...
dontBindTheDropdown();
}
您可以在选择值之前调用函数,如下所示:
SelectedValue='<%# CheckCountry(Eval("Country"))%>'
在aspx.cs文件中,创建函数如下,它将检查列表中是否存在国家/地区,如果不存在,则将显示默认值
public string CheckCountry(string country)
{
// add your logic to check contry in list
// and return value as per result if it is exist
// return country name else return default value
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.