作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我们有一个包含所有国家/地区代码的代码列表。国家代码是 Countries 表的主键,它在数据库中的许多地方用作外键。在我的应用程序中,国家通常显示为多个表单的下拉列表。
一些过去曾经存在的国家不再存在,例如Serbia and Montenegro , 其中有 SCG 的国家代码。
我有两个目标:
我看到两个选项:
还有其他想法?
最佳答案
我经常处理这种情况,并使用“事件”标志来解决问题,正如您所描述的那样。当我用值填充下拉列表时,我只加载“事件”数据并包含最多 1 个弃用值,但前提是它正在使用。 (即,如果我正在查看一个人的记录,并且该人有一个已弃用的国家/地区,那么该国家/地区将与活跃国家/地区一起包含在下拉列表中。我在只读和编辑模式下执行此操作,因为在我的案例,如果一个人的记录(例如)列出了一个已弃用的国家/地区,他们可以继续使用它,但是一旦他们将其更改为未弃用的国家/地区,然后保存它,他们将永远无法切换回来(您的用例可能会有所不同)。
所以关键的区别是,即使在只读模式下,我也不会将所有已弃用的国家/地区添加到 DDL,只是将已弃用的国家/地区添加到我正在查看的记录中,即便如此,也只有当该记录已被使用。
这是我在加载下拉列表时使用的逻辑示例:
protected void LoadSourceDropdownList(bool AddingNewRecord, int ExistingCode)
{
using (Entities db = new Entities())
{
if (AddingNewRecord) // when we are adding a new record, only show 'active' items in the drop-downlist.
ddlSource.DataSource = (from q in db.zLeadSources where (q.Active == true) select q);
else // for existing records, show all active items AND the current value.
ddlSource.DataSource = (from q in db.zLeadSources where ((q.Active == true) || (q.Code == ExistingCode)) select q);
ddlSource.DataValueField = "Code";
ddlSource.DataTextField = "Description";
ddlSource.DataBind();
ddlSource.Items.Insert(0, "--Select--");
ddlSource.Items[0].Value = "0";
}
}
关于c# - 如何处理(国家)代码列表中的弃用值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12056255/
我是一名优秀的程序员,十分优秀!