webForumDet fria alternativet

Få ett värde engång men som finns flera gånger

.NET

35 svar · 785 visningar · startad av wwwstekaren · sida 2 av 2

Frågan, av wwwstekaren

jag har en lista som ska skrivas ut. Den innehåller olika personer som är ansvariga för olika kunder. Nu när jag skriver ut så kan det förekomma att Nisse Nilsson skrivs ut två gånger hur gör jag så att en person bara skrivs ut en gång. Denna koden har jag idag för att skriva ut detta i en tabell private void PageLoad(object sender, System.EventArgs e) { DataSet ds = LoadWebs(); D

Läs frågan i sin helhet →
Medlem sedan apr. 2003234 inlägg
#21

Du är ju kung på detta kan du hjälpa mig lite mera:) Jag har nu en knapp som man klickar på så skrivas email adresser ut från vilken man person som man har klickat i listan, men jag vill nu ha om man kryssar i flera rutor så får jag ut flera mailadresser med ; efter adressen. Så jag får ut så här i mitt text fält

nissenilsson@hotmail.com; lasse@nf.se; lisa@abc.com

Min kod för min knapp som skriver ut en mail i text fältet ser ut så här

private void ResultButton_Click(object sender, System.EventArgs e)
		{
			DataSet ds = LoadWebs();
			Emails.Visible = true;
			
			DataTable table = ds.Tables[0];

			foreach(DataRow row in table.Rows)
			{
				if(Selected_Dude(row["Responsible"].ToString()))
                    //Response.Write(Emails.Text);
					

					//Response.Write(row["Responsible"].ToString());

				Emails.Text = (row["Email"].ToString());
			}		
		}
Medlem sedan apr. 20012 266 inlägg
#22
foreach(ListItem item in ResponsibleBox.Items)
{
    if (item.Selected)
    {
        Selected_Dude();
    }
}

Selected_Dude kan du ändra till det som passar dig...

Medlem sedan apr. 2003234 inlägg
#23

Får felet
No overload for method 'Selected_Dude' takes '0' arguments

private void ResultButton_Click(object sender, System.EventArgs e)
		{
			DataSet ds = LoadWebs();
			Emails.Visible = true;
			
			DataTable table = ds.Tables[0];

			
			foreach(ListItem item in ResponsibleBox.Items)
			{
				if (item.Selected)
				{
					Selected_Dude();
				}
			}

		}
Medlem sedan apr. 20012 266 inlägg
#24

Jag påpekade att du skulle byta ut Selected_Dude mot de du vill göra för varje person som har valts.

Medlem sedan apr. 2003234 inlägg
#25

Hur gör jag det med kod då? Sorry att jag inte förstår

Medlem sedan jan. 20012 204 inlägg
#26

Byt ut Selected_Dude(); mot det du vill göra. Tex så här:

sum string;
Function selecteddude(s string){
sum+=s & ";" ;
}

sen anopar du med ngt i stilen:

if (item.Selected)
				{
					Selected_Dude(item.tostring());
				}

Har aldrig skrivit c# så syntaxen är nog fel men metoden borde stämma :)

Medlem sedan apr. 20012 266 inlägg
#27

item.Value kommer ge dig värdet som är förkryssat i checkboxlisten och med det värdet kan du antingen skriva ut direkt eller skicka till någon annan funktion eller liknande för att t.ex hämta email adresser eller dyl.

För mer grundläggande förståelse av asp.net och dess olika kontroller kan du läsa här:
http://samples.gotdotnet.com/quickstart/aspplus/

Medlem sedan apr. 2003234 inlägg
#28

Hajar inte av exemplet tyvär hittar inte var jag kan läsa om det, ingen som kan hjälpa mig hur jag gör i kod bara:)? Supersnällt för det ni redan har gjort för mig:)

Medlem sedan apr. 20012 266 inlägg
#29

Om du förklarar lite bättre hur du gör och vad du vill göra så ska det nog gå :) Har lite problem just nu att förstå exakt syftet med det vi håller på med samt hur du lagt upp det.

Medlem sedan apr. 2003234 inlägg
#30

Just nu när jag kickar i en checkbox så skriver jag bara ut ett värde. Nu vill jag att värdet från email ska skrivas ut och det i textfäletet. När det funkar så får man ut en epost adress för den personen man har valt. Kryssar man i flera så händder det inget. VIll ha ut flera mail adersser i texte fletet med ; efter varje epost adress

Medlem sedan apr. 2003234 inlägg
#31

Denna koden skriver ut text högst upp på sidan vill att den ska skriva ut mailadresser i textfältet i stället

private bool Selected_Dude(string dude)
		{
			//DataRow row in table.Rows
			foreach(ListItem item in ResponsibleBox.Items)
			{
				if(item.Selected && item.Text == dude)
					
					//Emails.t.Text = (item["Email"].ToString());
					return true;
				
				Response.Write("test");
				//Emails.Text = (item.["Email"])
			}

			return false;
		}
	}
Medlem sedan apr. 20012 266 inlägg
#32

Om checkboxlistens value innehåller emailadresserna är denna metod lämplig.

foreach(ListItem item in ResponsibleBox.Items)
{
     if(item.Selected)
          Emails.t.Text += item.Value.ToString() + ";";
}
Medlem sedan apr. 2003234 inlägg
#33

Det funkar jätte bra men jag vill ha ut ["Email"] i stället

Medlem sedan apr. 2003234 inlägg
#34

skrev så här förut för att få ut mailadressen:)

Emails.Text = (row["Email"].ToString());
Medlem sedan apr. 20012 266 inlägg
#35

Enklast för att slippa hämta mer från databasen är att du binder value fältet i checkboxlisten till email adresserna och sedan text delen i checkboxlisten mot namn på personen eller liknande.

foreach(DataRow row in ds.Tables[0].Rows)
{
    ListItem item = new ListItem(row["Email"], row["Responsible"]);
    if (!ResponsibleBox.Item.Contains(item))
    {
        ResponsibleBox.Items.Add(item);
    }

    item = new ListItem(row["Email"], row["Contact"]);
    if (!ContactBox.Item.Contains(item))
    {
        ContactBox.Items.Add(item);
    }
}

På så sätt kan du använda koden jag angav tre inlägg upp.

Medlem sedan apr. 2003234 inlägg
#36

(foreach(DataRow row in ds.Tables[0].Rows)) får fel att ds inte finns jag måste väll lägga till ds? Hur gör jag det?

foreach(DataRow row in ds.Tables[0].Rows)

får fel på ds att den inte finns

286 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
146 ms — ändringar (db)