Nu har jag fastnat i min nybörjarvärld igen. Jag greppar inte riktigt Substring historien.
Och jag blir inte klokare av det jag hittat här på forumet då det inte riktigt tar upp mitt
lilla hinder.
Anyway...
Jag har fyllt en arrayList med data. Den innehåller 2 "fält" Namn och Telefon. Jag vill läsa
upp det i en listView med 3 kolumner: Förnamn, Efternamn och telefonnummer. Formatet i namndatan
är förnamn.efternamn, ibland förekommer det även kommatecken istället för en punkt i den formateringen.
I koden nedan ser ni hur det ser ut just nu. Jag hämtar namn 2 ggr och telefon en gång. Så nu är frågan.
Hur gör jag för att substringa/splitta ut dessa "person.namn" så att förnamn och efternamn kan separeras för stunden?
// Läs ut data från arrayListen och presentera i GUI (listViewen)
foreach(Person person in personList)
{
ListViewItem lvi = new ListViewItem(person.namn); //Substringa fram till punkt och/eller komma.
lvi.SubItems.Add(person.namn); //Substringa efter punkt och/eller komma.
lvi.SubItems.Add(person.telefon);
listView1.Items.Add(lvi);
}
Tacksam för alla hintar och förslag som ni kan komma på.
Tack Mc Fetto. Det ser jättebra ut. Men tyvärr så kommar jag inte så längt med det i mitt nybörjarträsk. *suck*
Jag är i den situationen att jag håller på och kämpar mig upp till knästående läge i denna .NET/C#/Objekttänkande
värld.
Så jag tar gärna emot fler hintar/tankar/lösningar hur jag ska ta hand om denna snutt jag fick av Mc Fetto.
Bifogar lite mer kod som jag tror kan behövas...
private void button1_Click(object sender, System.EventArgs e)
{
try
{
this.Cursor = Cursors.WaitCursor;//change the cursor to hover glass
string dom = this.textBox1.Text; //Usr anger domän.
string tel = this.textBox2.Text; //Usr anger nummer som finns i telnummer som sökes.
string usr = this.textBox4.Text; //Usr anger namn eller bokstäver som ingår i det namn han söker efter i AD:et.
int nTotalObjects = 0;
System.DirectoryServices.DirectoryEntry entry = new System.DirectoryServices.DirectoryEntry("LDAP://" +dom );
System.DirectoryServices.DirectorySearcher mySearcher = new System.DirectoryServices.DirectorySearcher(entry);
mySearcher.Filter = "(&(objectClass=user)(displayName="+ usr +"*" +")(phone="+ tel +"*" +"))";
//Done: En array som skapas för att läggas i listviewen.
//ToDO: Den ska kunna sorteras på / Splitta sträng vid punkt.
ArrayList personList = new ArrayList();
//ArrayList list = new ArrayList(); /*Hjälp från Webforum...*/
//personList.Add("lasse,bengtsson");
//string[] cutit;
//char[] ch = new char[2];
//ch[0] = '.';
//ch[1] = ',';
//str = personList[0].ToString().Split(ch); /*Vart ska nu denna bakas in nu då*/
foreach(System.DirectoryServices.SearchResult resEnt in mySearcher.FindAll())
{
System.DirectoryServices.DirectoryEntry de = resEnt.GetDirectoryEntry();
// Läs in värden till arrayen som nyttjas av DataGriden och ListViewrn.
personList.Add(new Person(de.Properties["name"].Value.ToString(), de.Properties["phone"].Value.ToString()));
nTotalObjects++;
}
// Räknar hur många träffar det blir
txtTotal.Text = nTotalObjects.ToString();
this.Cursor = Cursors.Arrow;
// Läs ut data från arrayListen och presentera i GUI (listViewn)
foreach(Person person in personList)
{
ListViewItem lvi = new ListViewItem(person.Namn); //Substring fram till punkt och/eller komma.
lvi.SubItems.Add(person.Namn); //Substring efter punkt och/eller komma.
/* lvi.SubItems.Add(person.Phone);
listView1.Items.Add(lvi);
}
}
}
private void listView1_ColumnClick(object sender, System.Windows.Forms.ColumnClickEventArgs e) /*Denna ska fungera med. Bör nog frågas om senare...*/
{
TheColumnSorter.CurrentColumn = e.Column;
//listView1.Sort();
}
public class Person
{
// Default Constructor
public Person()
{
}
// Egen Constructor med 2 inparametrar ska vara tre senare.
// Alternativt att man får "spränga fnamn.enamn i 2 delar senare"
public Person(string fornamn, string phone)
{
this.fornamn = fornamn;
this.Phone = phone;
}
private string fornamn;
public string Namn
{
get
{
return fornamn;
}
set
{
fornamn = value;
}
}
private string phone;
public string Phone
{
get
{
return phone;
}
set
{
phone = value;
}
}
}
Det ska jag göra när jag känner att jag kan komma vidare. För indirekt så har jag inte riktigt gjort det iom att jag inte fått det att rulla ännu.
Och på så vis känner jag att jag inte riktigt kan markera det som löst ännu. Men inom kort så kan jag förhoppningsvis göra det. Tror nog att jag tillhör de som inte slarvar allt för mycket med att markera trådar som lösta när de väl är det. :h
Och givetvis så kommer du få din "Credit" till slut.
Ändrade lite i mitt senaste inlägg då det alltför lätt kunde misstolkas som om jag funnit lösningen. * sorry för det *
Du får ursäkta, jag trodde du hade löst det.. :) Att markera tråden har inget med "Credit" att göra utan att göra skker och ting enklare för andra :bire
Jo personList en arrayList som läst in namn & telefon ifrån Active Directoryt
via classen "person". Men jag antar att det i princip också är en "enkel vektor".
Sen vill jag läsa ut detta i en listView. Och i samband med det så vill jag att
i listViewrns 1:a kolumn ska allt fram till och med punkt/komma-tkn skrivas ut (förnamn),
i 2:a kolumnen ska allt efter punkt/komma-tkn skrivas ut (efternamn) och sen kommer
telefonnummer i kolumn3.
Och all den datan ska hämtas från arrayListen. Så indirekt så vill jag inte plocka bort
några tecken utan bara "läsa fram till ett tecken" samt "läsa från ett visst tecken fram
till slutet av strängen".
Trodde att det skulle finnas någon "TrimLeft()" eller något liknande vid utläsning av data...
Men det är å andra sidan kanske bättre att försöka fixa det innan det läggs in i arraylisten.
Klen förtydling men jag hoppas du blev klokare av detta.
char[] ch = new char[2];
ch[0] = '.';
ch[1] = ',';
string[] str;
foreach(Person person in personList)
{
str = person.Namn.Split(ch);
ListViewItem lvi = new ListViewItem(str[0]); //Substring fram till punkt och/eller komma.
lvi.SubItems.Add(str[1]); //Substring efter punkt och/eller komma.
lvi.SubItems.Add(person.Phone);
listView1.Items.Add(lvi);
}
Låt säga att man har en sträng: "xx.yy,zz"
då reurnerar split() en vektor string[] med tre element (xx, yy, zz)