Erhalten Sie Enum Liste über GetType
Frage
I-Code, der eine Liste aller möglichen Werte für einen bestimmten ENUM
gibt
i gebunden, es ist ziemlich oft in meiner Web-Seiten Dropdownlists
jetzt im Versuch, einen Usercontrol zu machen, die die Typnamen als Parameter akzeptiert, was wiederum den Code ruft die Werteliste erstellen
wie mein Unter erwartet einen Parameter vom Typ
Shared Function EnumList(ByVal EnumType As Type) As List(Of ListItem)
Dim ret As New List(Of ListItem)
Dim consts = [Enum].GetValues(EnumType)
For Each c In consts
ret.Add(New ListItem With {.Text = c.ToString, .Value = c.ToString})
Next
Return ret
End Function
Im Versuch, die Zeichenfolge in den Benutzersteuerelementen declration in einen Typen verwendet zu drehen. das Problem ist, ich es nur mit Systemtypen tun (auch nicht mscorlib, ein bisschen plump). aber für Aufzählungen in meinem app_code erklärt, kann ich nicht den Weg finden, um es zu tun
die aqn eine Schnur mit einem lustigen Code wie dies macht (AstroDate ist der Name meiner Klasse):
"AstroDate, App_Code.rujpwg3d, Version = 0.0.0.0, Culture = neutral, PublicKeyToken = null"
aber wenn ich benutze es in der gettype, es Fehler
Bitte informieren Sie
Bearbeiten hier ist der Code in der Usercontrol versucht, eine Liste der Enum
zu bekommen Sub RefillData()
Dim TempValue = Value
MainList.Items.Clear()
MainList.DataSource = EnumList(Type.GetType(EnumType, True, True))
If EmptyText <> "" Then
Dim itm As New ListItem(EmptyText, "")
MainList.Items.Add(itm)
End If
MainList.DataBind()
Value = TempValue
End Sub
"EnumType" ist eine String-Eigenschaft in der declartaion des Usercontrol auf der Seite übergeben.
Lösung 2
here der Code
Dim ax = Reflection.Assembly.Load(ObjectType.Account.GetType.Assembly.FullName)
Dim tx = ax.GetType(EnumType)
Dim enumers = [Enum].GetNames(tx)
System.Array.Sort(enumers)
e.Result = enumers
objecttype.account ist irgendein Enum in meinem System, kann u verwenden je nachdem, was u wollen
bedankt sich bei allen für den Versuch,
Andere Tipps
Ich hatte Schwierigkeiten zu verstehen, was Sie genau tun wollten. Also, ich nehme eine Vermutung:
Sie haben ein Benutzersteuerelement, das eine DrowDownList auf dem Enum-Typ Sie bieten auf Basis schafft. Aber Sie hatten Schwierigkeiten es wieder zu lesen.
Ich habe eine Arbeitsprobe, die Ihnen nützlich sein könnten:
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="WebForm1.aspx.vb" Inherits="WebApplication2.WebForm1" %>
<%@ Register src="DynamicComboFromEnum.ascx" tagname="DynamicComboFromEnum" tagprefix="uc1" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<uc1:DynamicComboFromEnum ID="DynamicComboFromEnum1" runat="server" />
<asp:Button ID="Button1" runat="server" Text="Button" />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</div>
</form>
</body>
</html>
-Code hinter:
Public Enum TestEnum
Value1
Value2
Value3
Value4
Value5
Ende Enum
Public Class WebForm1 Erbe System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If (Not Page.IsPostBack) Then
DynamicComboFromEnum1.EnumType = GetType(TestEnum)
End If
End Sub
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
Label1.Text = DynamicComboFromEnum1.GetSelectedValue().ToString()
End Sub
End Class
User Control:
Public Class DynamicComboFromEnum
Inherits System.Web.UI.UserControl
Public Property EnumType() As Type
Get
Return ViewState("EnumType")
End Get
Set(ByVal value As Type)
ViewState("EnumType") = value
End Set
End Property
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If (Not Page.IsPostBack) Then
RefillData()
End If
End Sub
Sub RefillData()
MainList.Items.Clear()
MainList.DataSource = EnumList(EnumType)
MainList.DataBind()
End Sub
Private Function EnumList(ByVal type As Type) As Object
Dim Names As String() = [Enum].GetNames(type)
Return Names
End Function
Public Function GetSelectedValue() As Object
Return [Enum].Parse(EnumType, MainList.SelectedValue)
End Function
End Class
<%@ Control Language="vb" AutoEventWireup="false" CodeBehind="DynamicComboFromEnum.ascx.vb" Inherits="WebApplication2.DynamicComboFromEnum" %>
<asp:DropDownList ID="MainList" runat="server"></asp:DropDownList>
Ich bin nicht sicher, was los ist, aber ich habe Probleme, den Code einfügen. Also, bitte mit ihm entblößen und wenn jemand könnte es für mich in Ordnung bringen!