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.

War es hilfreich?

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!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top