繁体   English   中英

在asp.net的detailsview中的下拉列表数据绑定

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM