我将词典绑定到下拉列表。
比如说我在字典中有以下项目:
{"Test1", 123}, {"Test2", 321}
我希望下拉文字采用以下格式:
Test1 - Count: 123
Test2 - Count: 321
我正沿着以下道路走,没有运气:
MyDropDown.DataTextFormatString = string.Format("{0} - Count: {1}", Key, Value);
谢谢:)
答案 0 :(得分:5)
您可以在字典上使用LINQ创建投影视图,并创建一个匿名类型来保存自定义格式。
Dictionary<string, int> values = new Dictionary<string, int>();
values.Add("First", 321);
values.Add("Second", 456);
values.Add("Third", 908);
var displayView = from display in values
select new { DisplayText = display.Key + " Count: " + display.Value };
DropDownList1.DataSource = displayView;
DropDownList1.DataTextField = "DisplayText";
DropDownList1.DataBind();
答案 1 :(得分:1)
我认为DropDownList不支持DataTextFormatString
,就像你想要的那样连接一个String。据我所知,您只能使用格式字符串表示数字和日期。 (例如,请参见此处:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listcontrol.datatextformatstring.aspx)
您可以按照ChristiaanV建议的方式(匿名类型)执行此操作,也可以使用您自己的POCO class
(仅包含属性的类)。
请注意,使用匿名类型的范围有限。您不能在BusinessLayer-Assembly中使用它们并让GUI-Assembly使用结果,因为从方法返回匿名类型的能力非常有限。
我建议你这样做:
public class MyPOCO
{
public int MyPrimaryKey {get;set;}
public String DisplayString {get;set;}
}
在代码中创建List<MyPOCO>
并将其绑定到DataSource
属性。
将DataValueField
设置为MyPrimaryKey,将DataTextField
设置为DisplayString
如果您在回发上遇到数据绑定问题,可以执行以下操作:
List<MyPOCO>
DataSourceID
。答案 2 :(得分:1)
你不能在
中使用string.FormatDataTextFormatString
请尝试以下代码。
Dictionary<string, int> s = new Dictionary<string, int>();
s.Add("Test1", 123);
s.Add("Test2", 321);
foreach(KeyValuePair<string,int> temp in s)
{
DropDownList1.Items.Add(new ListItem(string.Format("{0} - Count: {1}", temp.Key, temp.Value),temp.Value.ToString()));
}