Hej! Hej! hej och tack för ditt engagemang. tyvärr funkade det inte... hej! Testa använda mitt förslag tillsammans med Onkelborgs förslag. Tjenare Thomas! Blir felet detsamma? Ingen aning men testa med Nej, inget av ovanstående funkar och kompileringsfelet är fortfarande detsamma...?? Hmm, testa lägga in ditt SelectedIndex i en integer först. Var in på Microsofts sidor och kikade lite... Thomas: att skriva <code>enum Country {Sverige, Norge};</code> är samma som att skriva <code>enum Country { Jodå, jag vet att det går att radbryta. Tusen tack ska ni ha! Jag är jätteglad för all hjälp även om jag inte kom fram till något. Jag kom just hem från "The last samurai" så jag är rätt glad trots allt. ;-) jo, men jag fick det inte att funka tyvärr... :( jag kanske får tänka om. Man kanske inte använder enum som jag tror ? Nu är ju jag helt växlad på asp men kan man inte använda "SelectedItem" istället för index? Hej För att omvandla en integer till en enum kan du göra så här: Om du vill göra det mer flexiblet, ex låta din Country Selectbox ha landskoder som value och inte index så kan du använda dig av EnumConverter klassen för att bygga en smart konverterare. Tack alla för era svar! Uppskattas verkligen!!!!!!Enum i ASP.NET?
Har problem med att enum att funka (ja, jag är nybörjare...). Här ett udrag ur koden:
<code>
protected System.Web.UI.WebControls.Label lblInsertName;
protected System.Web.UI.WebControls.TextBox txtPersNumber;
protected System.Web.UI.WebControls.Label lblInsertPersNumber;
protected System.Web.UI.WebControls.Button btnSend;
protected System.Web.UI.WebControls.Label lblResultName;
protected System.Web.UI.WebControls.Label lblResultPersNumber;
protected System.Web.UI.WebControls.DropDownList dpdList;
protected System.Web.UI.WebControls.TextBox txtName;
private void Page_Load(object sender, System.EventArgs e)
{
// Put user code to initialize the page here
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.btnSend.Click += new System.EventHandler(this.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
enum Country {
Sverige,
Norge,
}
private void Button1_Click(object sender, System.EventArgs e) {
Country myCountry = dpdList.SelectedValue;// men här skiter det sig så att säga...!!??
</code>
Min tanke är alltså att jag ska kolla vad som är valt i en selectlista som jag har i min aspx-sida. Vad är felet?
Tack för hjälpen!Sv: Enum i ASP.NET?
Jag har aldrig programmerat C# men jag kan gissa utifrån mina kunskaper inom VB.NET istället.
Testa skriv såhär istället.
<code>
enum Country {
Sverige = 0,
Norge = 1,
}
</code>
Mvh,
Thomas VanhaniemiSv: Enum i ASP.NET?
Tack i alla fall!Sv: Enum i ASP.NET?
Nej, Onkelborg, det funkade inte heller. Jag tror att jag kanske borde förtydliga mitt problem lite...:
I aspx-sidan har jag en dropdown som heter dpdList. Där kan jag välja två länder, Sverige och Norge. Beroende på vad jag väljer så ska programmet göra lite olika saker men det är iofs inte intressant just nu. Här har jag alltså, för övnings skull, tänkt att använda mig av enum:
<code>
enum Country {
Sverige,
Norge,
}
</code>
När jag klickar på en submitknapp (btnSend) så ska alltså valt värde i dropdownmenyn tas emot och då kollas:
<code>
private void Button1_Click(object sender, System.EventArgs e) {
Country myCountry = dpdList.SelectedIndex; // osv...
</code>
Och hur jag än försöker (ovan med Onkelborgs förslag) så får jag felmeddelandet:
<code>
Cannot implicitly convert type 'int' to 'WebApplication1.test1.Country'
</code>
... och jag kan inte förstå hur jag ska lösa detta.
Vore supertacksam om det är nån som kan "tända lampan" för mig.
mvh,
FredricSv: Enum i ASP.NET?
Felet ligger nog i att din enum lista inte har några unika numeriska värden och de behövs för att kunna identifiera vilken SelectedIndex som hör till vilket land.
Mitt förlag =)
<code>
protected System.Web.UI.WebControls.Label lblInsertName;
protected System.Web.UI.WebControls.TextBox txtPersNumber;
protected System.Web.UI.WebControls.Label lblInsertPersNumber;
protected System.Web.UI.WebControls.Button btnSend;
protected System.Web.UI.WebControls.Label lblResultName;
protected System.Web.UI.WebControls.Label lblResultPersNumber;
protected System.Web.UI.WebControls.DropDownList dpdList;
protected System.Web.UI.WebControls.TextBox txtName;
private void Page_Load(object sender, System.EventArgs e)
{
// Put user code to initialize the page here
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.btnSend.Click += new System.EventHandler(this.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
enum Country {
Sverige = 0,
Norge = 1,
}
private void Button1_Click(object sender, System.EventArgs e) {
Country myCountry = dpdList.SelectedIndex
}
</code>
Mvh,
Thomas VanhaniemiSv: Enum i ASP.NET?
Nej, jag försökte med ditt nu igen, i kombination med Onkelborgs, men icke sa nicke. FET-TORSK! ;-)
Kanske är ett tecken från ovan att jag borde städa toaletten eller något liknande. (?)Sv: Enum i ASP.NET?
I VB.NET skulle jag skrivit följande.
<code>
Public Enum Country
Sverige = 0
Norge = 1
End Enum
Private Sub Knapp_OnClick ()
Dim Land As Country = 0 'Ger Sverige
Land = 1 'Ger Norge
End Sub
</code>
Jag uppfattar det som att din kod nu ska fungera, men jag är ju som sagt själv lite osäker när det gäller C#.
Mvh,
Thomas VanhaniemiSv: Enum i ASP.NET?
<code>
enum Country {
Sverige = 0;
Norge = 1;
}
</code>Sv: Enum i ASP.NET?
Sv: Enum i ASP.NET?
<code>
private void Button1_Click(object sender, System.EventArgs e) {
int SelInt = dpdList.SelectedIndex
Country myCountry = SelInt
}
</code>
Tror det ska se ut så.
Med hjälp av detta ser vi ju om SelectedIndex har ens en integer.
Mvh,
Thomas VanhaniemiSv: Enum i ASP.NET?
Enligt dem skriver man
<code>enum Country {Sverige, Norge};</code>Sverige har då index 0 och Norge index 1.
Mvh,
Thomas VanhaniemiSv: Enum i ASP.NET?
Sverige,
Norge};</code>
bara att jag radbröt min kod vilket ska funka fint i C# (?). Sen hade du lagt till ett semikolon efter sista måsvingen men det undrar jag om det verkligen är rätt. Hur som helst så kvarstår felet om jag testar...
Onkelborg: vad menar du ska stå istället för "bla bla bla"?Sv: Enum i ASP.NET?
Tog det direkt från Microsofts sidor och där hade de semikolon efter sista måsvingen.
Har inga fler uppslag varför det inte fungerar för dig just nu.
I VB.NET skulle jag fått det att fungera direkt.
Mvh,
Thomas VanhaniemiSv: Enum i ASP.NET?
Hoppas det kommer fler förslag från någon (?).
Mvh,
FredricSv: Enum i ASP.NET?
Sv: Enum i ASP.NET?
Kan man verkligen omvandla ett int-värde till en enum? Är det inte så att man kan omvandla en enum till ett int-värde men inte tvärtom?Sv: Enum i ASP.NET?
Jag vet inte hur du fyller din combobox, men jag gissar att du fyller den med namnen i den enum. Genom t.ex.:
<code>
dpdList.Items.AddRange(Enum.GetNames(typeof(Country)));
</code>
Du borde i så fall kunna använda följande för att se vilken du valt:
<code>
private void Button1_Click(object sender, System.EventArgs e)
{
Country myCountry=(Country)Enum.Parse(typeof(Country),dpdList.SelectedIndex.ToString());
}
</code>Sv: Enum i ASP.NET?
<code>Country c = Country.ToObject(Country, dpdList.SelectedIndex);</code>
Med hjälp av ToObject som är en Static funktion i Enum-klassen kan man omvandla heltal till enum's.
För att definera en Enum kan du skriva:
<code>enum Country
{
Sverige,
Norge
};</code>
Man kan även ge länderna värden också:
<code>enum Country
{
Sverige = 10,
Norge = 20
};</code>
Men standard är att de får värden från 0 och uppåt.Sv: Enum i ASP.NET?
Tänk på om du kör med Index i ex databas. Autoincrement sådant så är det väldigt noga att DU inte gör ändringar i din db. ex tar bort fält m.m.
Säg att Sverige har id 1, men så raderar du den raden och lägger till Sverige igen, då får du Sverige på ID 2, om du då har detta som value i din selectbox kommer din enum att ge fel svar. Du måste alltså _alltid_ som utvecklare av din kod eller för andra ge strikta regler hur detta skall hanteras, det är något som inte kommer hålla i längden. Ändras ID i dbn måste enum int value ändras till samma. Du måste alltså alltid vara säker på att enum index är samma som index i din listbox.
I ett system vi byggde för ett tagsedan så ökade länderna i vår databas, då vi ville veta vilket land man kom från vid en registrering.
Men vi hade bara språkstöd för två, Sverige och England.
Vi valde då att alla länder utom sverige fick england som default. I detta fall måste du som listar ut Selectboxen sätta samma ID på de länder som inte är Sverige. För att få din kod att fungera. Eller köra med Landsnummer och convertera dessa till rätt enum.
Vet ej hur din implementation ser ut eller hur du tänkt lösa framtida problem, men tänkte bara ge dig lite tips här på vägen. Kanske inget du har nytta av just nu, men i framtiden.
Mvh JohanSv: Enum i ASP.NET?
Ska kika lite på det ni skrivit så ska jag se om jag kan lösa det.
:-)
Mvh,
Fredric