Just nu i M3-nätverket
Jump to content

räkna listview.items


andan

Recommended Posts

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

 

Link to comment
Share on other sites

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]

Link to comment
Share on other sites

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]

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

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.

 

 

 

Link to comment
Share on other sites

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();

 

Link to comment
Share on other sites

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?

 

Link to comment
Share on other sites

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();

 

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

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?

 

Link to comment
Share on other sites

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.

 

Link to comment
Share on other sites

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.

 

Link to comment
Share on other sites

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]

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

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]

Link to comment
Share on other sites

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.

 

Link to comment
Share on other sites

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.

 

Link to comment
Share on other sites

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]

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...