本文介绍了gridview 将下拉列表绑定到 List<keyvaluePair<int, string>>的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 29岁程序员,3月因学历无情被辞! 我的数据库中有许多表保存对键值对的引用:I have a number of tables in my DB that hold references to an key value pair:电话号码类型:1 - 主页2 - 工作3 - 移动4 - 传真等所以我有一个类型表,当它们在其他表中使用时,它们引用 int 值作为外键.当我将它们拉出时,我一直将它们作为 keyvaluepair 项目存储在使用它们的类中.So I have a table for the types and when they are used in other tables they reference the int value as a foreign key. When I have been pulling them out I have been storing them as keyvaluepair<int, string> items in the class that is using them.当我需要获取它们的列表时,我想我只需创建它们的 List 而不是使用两种不同类型的数据类型来获取相同的数据.When I needed to get a list of them I thought I would just create a List<> of them rather than use two different types of data types to get the same data.当我使用 edittemplate 位时需要在 gridview 中填充下拉列表时,我的问题就出现了.如果我使用数据源将其提取出来,它将在文本中写入 [1 Home],而不是将 int 作为值,将 Home 作为要显示的文本.My problem has arrived when I need to populate a dropdownlist within a gridview when I am using the edittemplate bit. If I use a datasource to pull this out it will write [1 Home] in the text rather than put the int as the value and Home as the text to display.我想我真的有一个多部分的问题.I guess I have a multiple part question really.一:我傻吗?这是将数据取出并存储(键值对部分)的一种非常糟糕的方式吗?我应该将它全部存储在数据表中吗?我不喜欢把它全部放在数据表中.我将我的 DAL 带到我的 BLL 并尝试将所有内容封装为对象或 List 的对象而不是所有内容的表格.大多数情况下,这都运行良好.Am I being stupid? Is this a really bad way to get the data out and store it (the keyvaluepair part)? Should I just be storing it all in a datatable? I didn't like to put it all in datatable. I have my DAL taking to my BLL and have tried to encapsulate everything as objects or List<>'s of objects rather than tables of everything. Most the time this has worked well.二:如果我使用某个对象而不是数据表绑定到下拉列表的对象数据源中,我该如何设置当前选定的值,而不是只选择列表中的第一项?If I was using some object rather than a datatable to bind into my objectdatasource for the dropdownlist, how can I set the currently selected value, rather than have it just have the first item in the list selected?编辑正如下面所指出的,我是个白痴,只需要设置 DataValueField 和 DataKeyField.As was pointed out below I was being an idiot and just needed to set the DataValueField and DataKeyField.要绑定下拉列表,我只需要做:To get the dropdownlist to bind I just had to do:SelectedValue='<%# DataBinder.Eval(Container, "DataItem.PhoneType.Key") %>'我没有立即看到它的原因是它没有出现在我的智能感知中,但是当我手动输入它时,它起作用了.The reason I didn't see that one straight away was because it was not showing up in my intellisense but when I manually typed it in, it worked.推荐答案使用字典并将您的 DropDown DataValueField 设置为 Key 并将 DataTextField 设置为 Value.Use a Dictionary<int, string> and set your DropDown DataValueField to Key and DataTextField to 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(); 这篇关于gridview 将下拉列表绑定到 List<keyvaluePair<int, string>>的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云! 07-29 17:41