Just nu i M3-nätverket
Gå till innehåll

räkna listview.items


andan

Rekommendera Poster

Hej alla!

 

har fastnat lite med att räkna och plussa på subitems från listview till en label

 

har kommit så här långt...:

 

ListViewItem itm = listView3.Items[0];

label9.Text = itm.SubItems[4].Text + (" St");

 

Nu får jag bara en siffra skulle vilja plussa på alla subitems[4] till label9

 

Länk till kommentar
Dela på andra webbplatser

skulle vilja plussa på alla subitems[4] till label9

Vad menar du med "alla"? subitems[4] är endast en post. Menar du samtliga subitems? Här är en metod:

ListViewItem lvi = listView1.Items[0];
		StringBuilder sb = new StringBuilder();
		foreach (ListViewItem.ListViewSubItem si in lvi.SubItems)
		{
			sb.Append(si.Text);
		}
		sb.Append("St");
label9.Text = sb.ToString();

[inlägget ändrat 2007-09-01 20:53:57 av Anjuna Moon]

Länk till kommentar
Dela på andra webbplatser

fungerar bra men vill bara ha endast från column 4..

Menar du alla raders värden ur kolumn 4 eller?

 

Länk till kommentar
Dela på andra webbplatser

ja, alla värden från column4 ska plussas på och visas i label9

[inlägget ändrat 2007-09-01 21:08:37 av andan]

[inlägget ändrat 2007-09-01 21:09:02 av andan]

Länk till kommentar
Dela på andra webbplatser

StringBuilder sb = new StringBuilder();
		foreach (ListViewItem lvi in listView1.Items)
		{
			sb.Append(lvi.SubItems[4].Text);
		}
		sb.Append("St");
		sb.ToString();

 

Länk till kommentar
Dela på andra webbplatser

jaha , du måste ha missuppfattat mig. det är siffror som ska plussas på. Nu läggs det bara efter varandra som i en mening.

 

 

 

Länk till kommentar
Dela på andra webbplatser

Aha, jo jag missuppfattade. Då blir det så här:

Int32 value = 0;
		foreach (ListViewItem lvi in listView1.Items)
		{
			value+=Convert.ToInt32(lvi.SubItems[2].Text);
		}
label9.Text = value.ToString();

 

Länk till kommentar
Dela på andra webbplatser

tack anjuna moon, det var exakt det jag behövde. Men om jag ska använda label9.text * 1,2 och visas i label10.text... hur skulle det se ut?

 

Länk till kommentar
Dela på andra webbplatser

Nu vet jag inte vilken precision du vill ha, så mitt förslag använder decimal som har en hög precision:

decimal d = (decimal)(value * 1.2);
		label10.Text = d.ToString();

 

Länk till kommentar
Dela på andra webbplatser

tackar Anjuna Moon! Nu när det problemet är löst, så kan jag lika gärna fråga dig lite om listview.

 

jag har en listview som har rätt många items jag skulle vilja filtrera ihop namn och jobb, ser ut så här:

namn, jobb, tid, antal sidor , av

andré, k447, 2007-07-05, 207 , bla bla

andré, k447, 2007-05-03, 207 , awda

andré, k447, 2007-01-07, 207 , rthrh

andré, k447, 2007-07-03, 207 , rdged

andré, k447, 2007-02-06, 207 , ytjt

 

Skulle man kunna med hjälp av ett button_click kunna föra ihop rätt namn, jobb och ADDERA antal sidor tillsammans??

 

Förlåt att jag frågar så mkt på en lördag kväll..

skulle underlätt massor..!

//tackar

 

Länk till kommentar
Dela på andra webbplatser

Det kom ingen bild med ditt inlägg. Men jag tror jag förstår vad du menar. En fråga bara, var skall resultaten läggas? Skall raderna i samma listview helt enkelt "komprimeras" så att ex. andré, k447 bara upptar en rad, men med sidor summerat? Om det skall vara så, vad skall isåfall läggas i datum-kolumnen?

Eller vill du fylla en andra Listview med summeringarna, med enbart kolumnerna namn, jobb och totalt antal sidor?

 

Länk till kommentar
Dela på andra webbplatser

samma listview. ja alla med enbart samma namn , jobb och summeringen av sidorna ska slås ihop till en rad. Resten spelar ingen roll det kan tas bort.

 

Länk till kommentar
Dela på andra webbplatser

Ok, det blev en lite längre kodsnutt så jag lade den på nedanstående länk för att behålla indenteringen:

 

http://rafb.net/p/oID28L89.nln.html

 

Du får anpassa indexena så att den använder värden från rätt kolumner. Anpassa även raden

temp1 = new String[] { temp2[0],temp2[1],Convert.ToString(kvp.Value)};

så att du eventullt lägger in "" för de fält som skall vara tomma.

 

Länk till kommentar
Dela på andra webbplatser

Asså du är bäst Anjuna Moon ska ge dig så mycke poäng det bara går =).. Du är väldigt duktig på c#..!

 

Jag sparar mycket på .txt filer undrar bara om hur man gör en sökning från en annan .txt fil. tex om Namn Jobb är likadana så adda kostnadställ och debiteringskod.

 

Så nu ser min listview ut så här:

 

namn, jobb, antal sidor

andré, k447, 207 ,

 

(skönt) =)

 

men har sparat text i en annan .txt fil

#

K447

André

33900

EDF3

 

Så min fråga är hur lägger man en sökning emot namn och jobb och fånga upp t ex 33900 och EDF3

 

så att det ser ut så här:

namn, jobb, antal sidor, kostnadställ, debiteringskod

andré, k447, 207 ,33900 ,EDF3

 

För att denna listview ska fungera som ett debiteringsunderlag.

 

 

[inlägget ändrat 2007-09-01 23:28:49 av andan]

Länk till kommentar
Dela på andra webbplatser

Så posterna ligger i din listview (med de tre första fälten ifyllda) och när du laddar filen vill du alltså att dessa värden (ex. 33900 och EDF3) skall läggas in på korrekta rader (i det här fallet raden där andré, k447 ligger)?

 

Är textfilen uppbyggd med # som separator mellan posterna?

Typ:

#

K447

André

33900

EDF3

#

K446

NågonAnnan

11111

EDF4

 

Länk till kommentar
Dela på andra webbplatser

Ok. Följande läser in varje post ur filen, kontrollerar om namn+jobb redan finns i din ListView. Om den finns där lägger den in de två påföljande raderna i kolumn 2 och 3.

 

http://rafb.net/p/BU2VO116.nln.html

 

EDIT: Du måste lägga till en using System.IO; längst upp i koden också.

 

(Oj, tack för alla poäng!!! ) :)

[inlägget ändrat 2007-09-02 00:08:20 av Anjuna Moon]

Länk till kommentar
Dela på andra webbplatser

Variabeln data kan du ta bort, den behövs som sagt inte.

I övrigt så vet jag inte varför det inte fungerar för dig, funkar bra här. Men om du har specialtecken (som ex. é i andré) i namn och jobb så måste du se till att textfilen är sparad i UTF8-format.

 

Jag förutsatte i övrigt att filen är uppbyggd som

#

Jobb

Namn

Värde1

Värde2

#

osv.

 

Länk till kommentar
Dela på andra webbplatser

Tack Anjuna Moon för allt.. betyder mycket!

 

kan försöka lite själv.. tror att nånting är fel med subitems... ska försöka lite...

 

En sista fråga som har stört mig ganska mycket

är att jag vill hämta info från en .ini fil rad 5 bokstäver 10-15

jag vet att det är en subfolder från denna path som innehåller en .ini fil

 

string[] lines = System.IO.File.ReadAllLines("dataapplikationer.txt");

 

string appl = lines[1];

string path = lines[2];

string sort = lines[5];

string dest = lines[3];

 

System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(path);

{

string name = dir.Name;

DateTime time = DateTime.Now;

ListViewItem item = new ListViewItem(new string[] { sort, name, time.ToString(), "Summa tid", "av:", appl });

this.listView2.Items.Add(item);

this.listView2.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);

}

 

Och att den mappen med den .ini ska flyttas till (string dest)

Och t ex path och dest kan ha flera lines som är sparat i en .txt fil så den kan köra denna

kod på flera ställen om användaren lägger till fler path´s och dest.

 

Länk till kommentar
Dela på andra webbplatser

det blir fel på item.SubItems[3].Text = sr.ReadLine();

säger:

InvalidArgument=Value of '3' is not valid for 'index'.

Parameter name: index

 

den vill skriva över namnet då fungerar koden den vill inte föra in det i subitems[3] och [4]

 

[inlägget ändrat 2007-09-02 00:48:28 av andan]

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...