3

これが可能かどうかはわかりませんが、複合型の辞書があり、それを RadioButtonList/CheckBoxList コントロールにバインドしたいと考えています。

public class ComplexType
{
   public String Name { get; set; }
   public String FormattedName { get; set; }
   public String Description { get; set; }
}
var listOfMyTypes = new Dictionary<int, ComplexType>();

var myType = new ComplexType { Name = "Name", Description = "Description", FormattedName = "Name|Description" };
var myType1 = new ComplexType { Name = "Name2", Description = "Description2", FormattedName = "Name|Description2" };


listOfMyTypes.Add(1, myType);
listOfMyTypes.Add(2, myType1);

m_dropDownlist.DataTextField = "Value"; //What do I put here to render "Name"
m_dropDownlist.DataValueField = "Key";
m_dropDownlist.DataSource = listOfMyTypes;
m_dropDownlist.DataBind();
4

3 に答える 3

2

Dictionary.Values代わりに、次のようにバインドしてみてください。

m_dropDownlist.DataTextField = "Name"
m_dropDownlist.DataValueField = "Description";
m_dropDownlist.DataSource = listOfMyTypes.Values;
m_dropDownlist.DataBind();
于 2012-06-30T13:50:49.427 に答える
1

表示するプロパティに TextField を設定します。投稿するプロパティに ValueField を設定します。最後に、ディクショナリの値にバインドします。DropDownList の「テンプレート」バージョンを探していますが、見つかりません。そのため、辞書のキーが必要な場合は、ループ/追加という難しい方法で行う必要がある場合があります。

m_dropDownlist.DataTextField = "FormattedName"; //What do I put here to render "Name" 
m_dropDownlist.DataValueField = "Name"; 
m_dropDownlist.DataSource = listOfMyTypes.Values; 
m_dropDownlist.DataBind(); 

私は別の方法を見つけました。クラスで「ToString()」をオーバーライドできます。

public class ComplexType      
{      
   public String Name { get; set; }      
   public String FormattedName { get; set; }      
   public String Description { get; set; } 
   public override string ToString()
   {
      return this.Name;
   }     
}  

次に、通常どおりバインドします。

m_dropDownlist.DataTextField = "Value"; //What do I put here to render "Name" 
m_dropDownlist.DataValueField = "Key"; 
m_dropDownlist.DataSource = listOfMyTypes; 
m_dropDownlist.DataBind(); 
于 2012-06-30T13:47:25.477 に答える
0

あなたは書ける

m_dropDownlist.DataTextField = "Value.Name";

于 2013-01-25T14:34:20.140 に答える