我有一個要求,當用戶單擊圖像時,應該顯示一個列表,並帶有複選框,並且數據庫中存在的所有類別和用戶都應該能夠選擇複選框。如何使用asp:repeater控件實現這一點?該caegory是一個枚舉類型,可以有n個值。在repeater中,我添加了一個複選框和一個標籤;標籤應顯示類別文本。使用枚舉綁定中繼器列表
-1
A
回答
0
首先,您應該爲[Enum]中的每個值添加[Description]屬性。這使您可以爲每個值設置適當的描述性文本。此屬性是在System.ComponentModel,這裏有一個例子: -
public enum CalendarShowAsEnum
{
[Description("None")]
None = 10,
[Description("Busy")]
Busy = 20,
[Description("Out Of Office")]
OutOfOffice = 30,
[Description("On Holiday")]
OnHoliday = 40
}
然後,您需要2個功能: -
一個函數,它接受一個枚舉類型和一個列表框/下拉作爲參數,並會爲每個枚舉一個進入名單
一個輔助函數的枚舉轉換成你給他們的描述性標題(上面的例子)
列表功能可能如下(所有這一切都是從一個項目我從事拍攝): -
public static void BindNamedEnumList(ListControl list,
Type enumerationType)
{
list.Items.Clear();
Array array = Enum.GetValues(enumerationType);
ListItem item;
string name;
var enumerator = array.GetEnumerator();
if (enumerator != null)
{
while (enumerator.MoveNext())
{
Enum value = enumerator.Current as Enum;
name = EnumHelper.GetEnumName(value);
item = new ListItem(name);
item.Value = Convert.ToInt32(value).ToString();
list.Items.Add(item);
}
}
}
該函數有一個類型和一個列表控件(來自繼承其ListBox和DropDownList的)。 Type是要添加到列表中的枚舉的.GetType()。請注意,它不會選擇任何值,並且它確實取決於具有定義的整數值的每個枚舉值。後一部分將幫助您選擇單個項目。
請注意循環調用EnumHelper.GetEnumName(value)
- 這是使用我在開始時提到的Description屬性的幫助器函數。這個功能看起來像: -
public static string GetEnumName(object value)
{
string retVal = string.Empty;
try
{
FieldInfo fieldInfo = value.GetType().GetField(value.ToString());
DescriptionAttribute[] attributes = (DescriptionAttribute[])fieldInfo.GetCustomAttributes(typeof(DescriptionAttribute), false);
retVal = ((attributes.Length != 0) ? attributes[0].Description : value.ToString());
}
catch (System.NullReferenceException)
{
}
finally
{
if (string.IsNullOrEmpty(retVal))
{
retVal = "Unknown";
}
}
return retVal;
}
它採用反射,所以你需要添加一個進口的System.Reflection
要使用列表功能可將枚舉值綁定到列表中,只需撥打
{HelperClass}.BindNamedEnumList(myListBox, typeof({MyEnumType})
相關問題
- 1. XAML綁定列表枚舉
- 2. 使用ObjectDataProvider綁定枚舉
- 3. 使用列枚舉的LINQ表枚舉
- 4. WPF:無法綁定DataGrid枚舉列表
- 5. 模型綁定枚舉標誌列表
- 6. 綁定枚舉以下拉列表
- 7. 綁定枚舉[]以列表框
- 8. XAML:綁定到器isChecked列出使用枚舉指數
- 9. Silverlight - 枚舉綁定
- 10. 綁定枚舉AspxListBox
- 11. Guice,綁定枚舉
- 12. 此枚舉器綁定的列表已被修改。只能用一個枚舉如果列表不改變
- 13. 使用枚舉()的列表
- 14. 使用枚舉綁定組合框selectedvalue
- 15. 組合框列綁定到枚舉
- 16. 中繼器綁定列表(字符串)
- 17. 綁定列表到數據中繼器
- 18. 綁定列表項陣中繼器
- 19. 綁定中繼器到堆棧列表
- 20. 枚舉與轉換器綁定
- 21. 在C中的枚舉綁定下拉列表#
- 22. WPF綁定列表框中包含子可枚舉
- 23. 綁定到枚舉在XAML
- 24. 綁定枚舉在玩
- 25. 綁定ComboBoxes枚舉...在Silverlight!
- 26. WPF數據綁定枚舉
- 27. WPF數據綁定枚舉
- 28. 綁定NSComboBox來枚舉?
- 29. 綁定標誌枚舉XAML
- 30. Hibernatate不綁定枚舉
所以 - 你只是想顯示一個複選框列表,每其中一個代表枚舉值?我可以在C#中提供一個例子,如果這會有所幫助的話,它肯定可以完成,對不起,我幾年來沒有做過任何VB.NET。 – sh1rts 2015-02-24 12:09:13
應該有所幫助。我將顛倒VB.NET代碼 – 2015-02-25 13:38:30