webForumDet fria alternativet

arraylist problem

6 svar · 442 visningar · startad av Gimbo

GimboMedlem sedan dec. 20001 630 inlägg
#1

Tja,

har en funktion där jag lägger in 2 värden i en arraylist så här:

al.Add(firstName + " " + lastName);
al.Add(Email);

sedan har jag en funktion där jag i en dropdown vill endast visa first name och lastname men just nu så blir det som så att firstname och last name hamnar på en rad i dropwdownen och email på en annan så det ser ut sp här:

pelle larsson
pelle@larsson.com

så här ser koden ut för att populera dropdownen:

ArrayList al = this.GetUsers("");
                for (int i = 0; i < al.Count; i++)
                {
                    ListItem item = new ListItem(al[i].ToString());
                    ddlOU.Items.Add(item);
                }

jag vill att det endast visas pelle larsson i dropdownen, för när jag seadn väljer peller larsson så skall det via en postback fyllas i ett formulär med namn och email i 2olika textfält och där har jag gjort så här:

private void ddlOU_SelectedIndexChanged(object sender, EventArgs e)
        {
            
            txtUserName.Text = ddlOU.SelectedValue;
            
            //txtUserEmail.Text = 
        }

vet inte hur det ska se ut för att emailadressen hamnar i textfältet?

hoppas ni förstår vad det e jag vill göra?

butikoMedlem sedan jan. 2007173 inlägg
#2

Du har nog lite fel approach här, namn och email kommer ju alltid att ligga om varandra... om du ska ha en array med användare så kan du istället skapa en lista med objekt där varje objekt är en användare med sina respektive egenskaper.

Men villl du ha ett snabbhack så kan du ju alltid kolla om raden innehåller ett @-tecken, typ så här:

if (!al[i].ToString().Contains("@"))
{
  ListItem item = new ListItem(al[i].ToString());
  ddlOU.Items.Add(item);

}
GimboMedlem sedan dec. 20001 630 inlägg
#3

thx det funka, men hur gör jag får att i postbacken få email adressen visat i textfältet?

GimboMedlem sedan dec. 20001 630 inlägg
#4

ingen som vet hur jag kan få värdet från al.add(Email); till min postback?
txtUserEmail.Text = al.add(Email); fungerar ju inte, någon som vet hur jag kan få det värdet assignat till txtUserEmail.Text i min postback?

ordellMedlem sedan sep. 200278 inlägg
#5

Eftersom du lägger email EFTER namnet i ArrayListen så tar du ju lämpligast txtUserEmail.Text = al[i+1] ...

GimboMedlem sedan dec. 20001 630 inlägg
#6

funka inte...
har gjort så här i min postback

txtUserName.Text = ddlOU.SelectedValue;
              ArrayList al = this.GetUsers_Active("");
              for (int i = 0; i < al.Count; i++)
              {
                  ListItem item = new ListItem(al[i].ToString());
                  if (al[2].ToString() == txtUserName.Text)
                  {
                      txtUserEmail.Text = al[1].ToString();
                  }
              }

men jag får alltid upp den första personens email adress i email fältet? det är alltså samma emailadress som visas spelar ingen roll vilken användare jag väljer, vad gör jag fel?

butikoMedlem sedan jan. 2007173 inlägg
#7

Du har ju hårdkodat ditt index:

txtUserEmail.Text = [B]al[1].[/B]ToString();

al[1] är ju andra positionen i din array (eftersom index börjar på 0) och där ligger ju alltid första personens mailadress med din lösning. Dessutom har du ett hårdkodat index även i din if runt...

130 ms totalt · 3 externa anrop · cache AV · v20260731051352-full.56cc9887
0 ms — hämta statistik (cache)
0 ms — hämta forumlista (cache)
128 ms — hämta tråd, inlägg och bilagor (db)