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

Sortera Listview.. Visa bara textbox.text.??????


VisualC

Rekommendera Poster

Hej jag undrar hur man hämtar info från .txt fil. Men enbart det som står i textbox... typ så här:

 

.txt fil

 

#

1

2

3

johan

5

#

6

7

8

pelle

10

 

Så om det står johan i textboxen ska den hämta:

1,2,3,johan,5.

fråga om det är något ni inte förstår..

Behöver verkligen det här, skulle spara så mycket tid!!

 

uppskattar all hjälp, hellst lite kod stripps =)

tack på förhand

 

Länk till kommentar
Dela på andra webbplatser

  • Svars 71
  • Skapad
  • Senaste svar

Hur ser formatet ut på texten? Alltid såhär eller?

#
rad
rad
rad
rad
rad
#
rad
rad
rad
rad
rad
#
rad
rad
rad
rad
rad

 

osv.

 

Länk till kommentar
Dela på andra webbplatser

Hur delegerar jag den infon till en listview?

{

string Match = textBox1.Text;

List<string> Data=new List<string>();

string[] temp = new string[6];

StreamReader sr = new StreamReader(@"c:\testa.txt");

while (sr.Peek() > -1)

{

if (ReadChunk(sr,out temp,Match))

{

Data.AddRange(temp);

}

}

}

private bool ReadChunk(StreamReader sr,out string[] Chunk,string MatchData)

{

Chunk = new string[6];

bool FoundMatch=false;

for (int i = 0; i < 6; i++)

{

try

{

Chunk = sr.ReadLine();

if (i == 4 && Chunk == MatchData)

FoundMatch = true;

}

catch (Exception ex)

{

FoundMatch = false;

}

}

return FoundMatch;

}

 

Tack

 

Länk till kommentar
Dela på andra webbplatser

Hur delegerar jag den infon till en listview?

Bara att loopa igenom listan med värden och lägga in dem

 

private void PopulateListView(List<string> list) 
	{
		listView1.View = View.Details;
		listView1.Columns.Add("Kolumn1");
		listView1.Columns.Add("Kolumn2");
		listView1.Columns.Add("Kolumn3");
		listView1.Columns.Add("Kolumn4");
		listView1.Columns.Add("Kolumn5");
		listView1.Columns.Add("Kolumn6");
		for (int i = 0; i < list.Count; i += 6) 
		{
			ListViewItem item = new ListViewItem(list[i]);
			item.SubItems.Add(list[i + 1]);
			item.SubItems.Add(list[i + 2]);
			item.SubItems.Add(list[i + 3]);
			item.SubItems.Add(list[i + 4]);
			item.SubItems.Add(list[i + 5]);
			listView1.Items.Add(item);
		}
	}

 

som du anropar från den andra koden med

PopulateListView(Data);

 

Länk till kommentar
Dela på andra webbplatser

Lite pinsamt men jag kan bara inte få det att fungera...

 

min ser ut så här nu:

string Match = textBox2.Text;

List<string> Data = new List<string>();

string[] temp = new string[6];

StreamReader sr = new StreamReader(sokvag+ ".txt");

while (sr.Peek() > -1)

{

if (ReadChunk(sr, out temp, Match))

{

Data.AddRange(temp);

}

PopulateListView(Data);

}

}

}

private bool ReadChunk(StreamReader sr, out string[] Chunk, string MatchData)

{

Chunk = new string[6];

bool FoundMatch = false;

for (int i = 0; i < 6; i++)

{

try

{

Chunk = sr.ReadLine();

if (i == 4 && Chunk == MatchData)

FoundMatch = true;

}

catch

{

FoundMatch = false;

}

}

return FoundMatch;

}

private void PopulateListView(List<string> list)

{

listView2.View = View.Details;

listView2.Columns.Add("Kolumn1");

listView2.Columns.Add("Kolumn2");

listView2.Columns.Add("Kolumn3");

listView2.Columns.Add("Kolumn4");

listView2.Columns.Add("Kolumn5");

listView2.Columns.Add("Kolumn6");

 

for (int i = 0; i < list.Count; i += 6)

{

ListViewItem item = new ListViewItem(list);

item.SubItems.Add(list[i + 1]);

item.SubItems.Add(list[i + 2]);

item.SubItems.Add(list[i + 3]);

item.SubItems.Add(list[i + 4]);

item.SubItems.Add(list[i + 5]);

listView2.Items.Add(item);

}

}

 

}

}

 

min .txt fil ser ut så här:

#

blabla

K441111

2007-09-11 15:15:15

2007-09-11 15:15:15

555

AD

3,5

eh_papper

#

blabla

K441111

2007-09-11 15:15:15

2007-09-11 15:15:15

555

WQ

3,5

eh_papper

 

Om jag skriver AD i textboxen ska den föra in alla rader till listview inom den#..

men nu händer ingenting.. konstigt..

 

[inlägget ändrat 2007-09-12 12:46:38 av VisualC]

Länk till kommentar
Dela på andra webbplatser

Inte så konstigt. Mitt exempel byggde ju på att din fil var uppbyggd med data i 6-raders chunks. Ditt filexempel nu har ju 9-raders chunks.

 

Du får skriva om koden så att det anpassas efter detta.

[inlägget ändrat 2007-09-12 12:46:51 av Anjuna Moon]

Länk till kommentar
Dela på andra webbplatser

sista frågan, nu hittar den vad den ska men det blir en dubbel loop på den

vad kan det bero på? så jag får varje item 2 gr...

 

[inlägget ändrat 2007-09-12 12:59:49 av VisualC]

Länk till kommentar
Dela på andra webbplatser

För mig loopar den inte som du säger. Pröva med att lägga in en listView1.Clear() precis innan den börjar fylla din listview

 

Länk till kommentar
Dela på andra webbplatser

Tusen tack! Du är rätt haj på listview och .txt files!

 

Har en till problem som verkligen kliar i arslet..

Kopierar min fråga från en msdn.com sida.

 

can u help me with a counter for this:

if subitem[0] and subitem[1] matches with a lines[idex +1] and a lines[idex +2] then calculate subitems[1] with +1.

dom får aldrig matcha båda två. Ena eller båda måste vara unikt.

Och Namnet (subitems[1]) kommer heta något i stilen K441111 och sista ettan där är en string som automatiskt börjar på ett.

 

and the item are saved in .txt file like this

#

1

2

3

4

#

5

6

7

8

 

Tack på förhand

 

 

 

Länk till kommentar
Dela på andra webbplatser

ok.. Försöker ta det igen.. ;P

 

Subitem[0](namn) och subitem[1](nummer) måste vara unika. Om båda matchar något annat i en .txt fil ska den plussa på 1 på subitem[1].

 

för exempel

#

pelle

k441152

rad

rad

#

pelle

k441153

rad

rad

 

Om jag nu skulle lägga till "pelle" "k441153" i min listview ska den finna kopian som redan finns i exemplet och plussa på 1 så det blir: "pelle" "k441154"

 

#

pelle

k441152

rad

rad

#

pelle

k441153

rad

rad

#

pelle

k441154

rad

rad

 

Och sista siffran på ex "k441151" är en string som börjar på 1.

 

Nu blev det lite mera förstårligt och läsbart, eller?

 

[inlägget ändrat 2007-09-12 13:42:30 av VisualC]

Länk till kommentar
Dela på andra webbplatser

hur ändrar jag PopulateListView i properties lr?

Nä, PopulateListView är en av funktionerna jag skrev åt dig. Du ska byta ut den koden mot den nya jag gav dig nyss.

 

Länk till kommentar
Dela på andra webbplatser

ok.. nu förstår jag allt

 

 

private void PopulateListView1()

{

string[] lines = System.IO.File.ReadAllLines("sökväg.txt");

string path1 = lines[1];

if (System.IO.File.Exists(path1 + "personalpr.txt"))

{

throw new Exception(path1 + "personalpr.txt");

}

}

}

 

så skumt, för nu hittar den inte filen personalpr.txt.

 

Länk till kommentar
Dela på andra webbplatser

Nu kastar du ju ett undantag om filen existerar (och inte tvärtom, som jag gissar är det du vill göra).

 

Ändra till

if (!System.IO.File.Exists(path1 + "personalpr.txt"))

dvs. ett NOT-tecken (!) i början.

Hursomhelst, om det ändå inte fungerar så saknas säkert ett \ i slutet av din path.

 

Länk till kommentar
Dela på andra webbplatser

ok.. nu vill jag reda ut det här

this.listView1.Items.Clear();

string ett = "1";

string u = comboBox1.Text;

string q = textBox1.Text;

string w = textBox2.Text;

DateTime dt = DateTime.Now;

 

 

if (q.Length > 0 && w.Length > 0 && u.Length > 0)

{

 

if (this != null)

{

string time = dt.ToString("dd");

string name = this.textBox1.Text + time.ToString() + ett;

PopulateListView1();

ListViewItem item = new ListViewItem(new string[] { this.comboBox1.Text, name, dt.ToString(), this.textBox2.Text });

ListViewIns.Items.Add(item);

ListViewItem item1 = new ListViewItem(new string[] { this.comboBox1.Text, name, dt.ToString(), this.textBox2.Text });

ListViewIns1.Items.Add(item1);

this.textBox1.Clear();

sparaform();

}

}

else MessageBox.Show("Du måste logga in, fylla i allt");

}

 

private void PopulateListView1()

{

string[] lines = System.IO.File.ReadAllLines("sökväg.txt");

string path1 = lines[1];

if (!System.IO.File.Exists(path1 + "/personalpr.txt"))

{

throw new Exception(path1 + "/personalpr.txt");

}

LoadEntries();

listView1.View = View.Details;

listView1.Columns.Add("Kolumn1");

listView1.Columns.Add("Kolumn2");

listView1.Columns.Add("Kolumn3");

listView1.Columns.Add("Kolumn4");

listView1.Columns.Add("Kolumn5");

string Name, No, key;

int n;

for (int i = 0; i < list.Count; i += 5)

{

Name = list[i + 1];

No = list[i + 2];

while (Entries.Contains(key = string.Concat(Name, "@@", No)))

{

n = Convert.ToInt32(No.Substring(No.Length - 1));

No = String.Concat(No.Substring(0, No.Length - 1), n + 1);

 

}

if (!Entries.Contains(key))

Entries.Add(key);

ListViewItem item = new ListViewItem(list);

item.SubItems.Add(Name);

item.SubItems.Add(No);

item.SubItems.Add(list[i + 3]);

item.SubItems.Add(list[i + 4]);

listView1.Items.Add(item);

}

 

}

 

då får jag fel på alla list, och om jag skriver i private void PopulateListView1(List<string> list)

då kan jag inte söka efter den functionen. Då lägger jag till PopulateListView1(Data) då fungerar inte det heller...

nånting är knas...

 

Länk till kommentar
Dela på andra webbplatser

Nu ser den ut så här efter en timme och lite tänkande:

string ett = "1";

string u = comboBox1.Text;

string q = textBox1.Text;

string w = textBox2.Text;

DateTime dt = DateTime.Now;

List<string> name1 = new List<string>();

 

if (q.Length > 0 && w.Length > 0 && u.Length > 0)

{

 

if (this != null)

{

string time = dt.ToString("dd");

string name = this.textBox1.Text + time.ToString() + ett;

PopulateListView1(name1);

ListViewItem item = new ListViewItem(new string[] { this.comboBox1.Text, name1, dt.ToString(), this.textBox2.Text });

ListViewIns.Items.Add(item);

ListViewItem item1 = new ListViewItem(new string[] { this.comboBox1.Text, name1, dt.ToString(), this.textBox2.Text });

ListViewIns1.Items.Add(item1);

this.textBox1.Clear();

sparaform();

}

}

else MessageBox.Show("Du måste logga in, fylla i allt");

}

private List<string> Entries;

private void LoadEntries()

{

string[] lines = System.IO.File.ReadAllLines("sökväg.txt");

string path1 = lines[1];

string key;

Entries = new List<string>();

foreach (ListViewItem item in listView1.Items)

{

key = string.Concat(item.SubItems[0], path1 + "personalpr.txt", item.SubItems[1]);

if (!Entries.Contains(key))

Entries.Add(key);

}

}

private void PopulateListView1(List<string> list)

{

string[] lines = System.IO.File.ReadAllLines("sökväg.txt");

string path1 = lines[1];

 

LoadEntries();

listView1.View = View.Details;

listView1.Columns.Add("Kolumn1");

listView1.Columns.Add("Kolumn2");

listView1.Columns.Add("Kolumn3");

listView1.Columns.Add("Kolumn4");

listView1.Columns.Add("Kolumn5");

string Name, No, key;

int n;

for (int i = 0; i < list.Count; i += 5)

{

Name = list[i + 1];

No = list[i + 2];

while (Entries.Contains(key = string.Concat(Name, path1 + "personalpr.txt", No)))

{

n = Convert.ToInt32(No.Substring(No.Length - 1));

No = String.Concat(No.Substring(0, No.Length - 1), n + 1);

 

}

if (!Entries.Contains(key))

Entries.Add(key);

ListViewItem item = new ListViewItem(list);

item.SubItems.Add(Name);

item.SubItems.Add(No);

item.SubItems.Add(list[i + 3]);

item.SubItems.Add(list[i + 4]);

listView1.Items.Add(item);

}

}

 

Men den vill inte plussa på något, det kommer samma subitem[1] ändå...

varför???

 

 

Länk till kommentar
Dela på andra webbplatser

Den här koden går inte igenom en .txt fil.

Det kommer vara flera användare och den måste gå igenom en .txt fil

Jag kan inte snickra ihop den.

 

 

Länk till kommentar
Dela på andra webbplatser

Jo, fast jag har redan suttit rätt länge med den här tråden och är rätt trött efter egen arbetsdag tyvärr.

 

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...