我的数据库中有许多表保存对键值对的引用:
电话号码类型:
- 1 - Home
- 2 - Work
- 3 - 移动
- 4 - Fax
etc
所以我有一个类型表,当它们在其他表中使用时,它们引用 int 值作为外键。当我把它们拉出来时,我一直将它们存储为keyvaluepair<int, string>
使用它们的类中的项目。
当我需要获取它们的列表时,我想我只需创建它们的 List 而不是使用两种不同类型的数据类型来获取相同的数据。
当我使用 edittemplate 位时需要在网格视图中填充下拉列表时,我的问题就出现了。如果我使用数据源将其拉出,它将在文本中写入 [1 Home],而不是将 int 作为值并将 Home 作为要显示的文本。
我想我确实有一个由多个部分组成的问题。
One:
我是不是傻了?这是获取数据并存储它(键值对部分)的非常糟糕的方法吗?我应该将其全部存储在数据表中吗?我不喜欢把它全部放在数据表中。我有我的 DAL 到我的 BLL 并尝试将所有内容封装为对象或List<>
是由对象组成的,而不是由表格组成的。大多数时候,这种方法效果很好。
Two:
如果我使用某个对象而不是数据表绑定到下拉列表的对象数据源,如何设置当前选定的值,而不是只选择列表中的第一项?
EDIT
正如下面指出的,我是个白痴,只需要设置 DataValueField 和 DataKeyField 。
要绑定下拉列表,我只需要做:
SelectedValue='<%# DataBinder.Eval(Container, "DataItem.PhoneType.Key") %>'
我没有立即看到它的原因是它没有出现在我的智能感知中,但是当我手动输入它时,它就起作用了。
使用 Dictionary 并将 DropDown DataValueField 设置为Key和 DataTextField 到Value.
// A sample dictionary:
var dictionary = new Dictionary<int, string>();
dictionary.Add(1, "Home");
dictionary.Add(2, "Work");
dictionary.Add(3, "Mobile");
dictionary.Add(4, "Fax");
// Binding the dictionary to the DropDownList:
dropDown.DataTextField = "Value";
dropDown.DataValueField = "Key";
dropDown.DataSource = dictionary; //Dictionary<int, string>
dropDown.DataBind();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)