Avatar billede jimgordon Nybegynder
03. januar 2005 - 15:40 Der er 2 kommentarer og
1 løsning

Opdatering af ListView

Hælder et dataset dynamisk ind i en ListView control. Første gang er det fint, kolonner og rækker kommer fint ind. Anden gang sker der ingen opdatering ? Er der noget skummel ved en ListView. Hvis jeg laver præcis det samme med et DataGrid er der ingen problemer, dvs datasette er helt ok, hvergang det læses ind.

Har et DataSet ds, der skal præsenteres i et ListView lv:

foreach(DataColumn c in ds.Tables[0].Columns){
  //adding names of columns as Listview columns   
  ColumnHeader h = new ColumnHeader();
  h.Text = c.ColumnName;
  //System.Diagnostics.Debug.WriteLine(h.Text);
  h.Width = -2;
  lv.Columns.Add(h);
}

DataTable dt = ds.Tables[0];
string[] str = new string[ds.Tables[0].Columns.Count];
               
//  Adding Datarows as listview Grids
foreach(DataRow rr in dt.Rows){
  for(int col=0; col <= ds.Tables[0].Columns.Count-1; col++) {   
    str[col]=rr[col].ToString();
    //System.Diagnostics.Debug.WriteLine(str[col]);
  }
  ListViewItem lvi = new ListViewItem(str);
  lv.Items.Add(lvi);
}

Det hele står i en metode der bliver kaldt hvergang.
Burde det ikke virke hvergang og ikke kun den første gang ?
Avatar billede kaffe Nybegynder
03. januar 2005 - 19:46 #1
private void button1_Click(object sender, System.EventArgs e) {
  lv.Clear();
  foreach(DataColumn c in ds.Tables[0].Columns){
    //adding names of columns as Listview columns   
    ColumnHeader h = new ColumnHeader();
    h.Text = c.ColumnName;
    //System.Diagnostics.Debug.WriteLine(h.Text);
    //h.Width = -2;
    lv.Columns.Add(h);
  }

  DataTable dt = ds.Tables[0];
  string[] str = new string[ds.Tables[0].Columns.Count];
               
  //  Adding Datarows as listview Grids
  foreach(DataRow rr in dt.Rows){
    for(int col=0; col <= ds.Tables[0].Columns.Count-1; col++) {   
      str[col]=rr[col].ToString();
      //System.Diagnostics.Debug.WriteLine(str[col]);
    }
    ListViewItem lvi = new ListViewItem(str);
    lv.Items.Add(lvi);
  }
  ds.Tables[0].Clear();
}
Avatar billede jimgordon Nybegynder
04. januar 2005 - 09:47 #2
Okaj, h.width = -2  (dvs auto size er problemet, mærkeligt nok)
Men så må man jo hårdkode....

Tusind tak det fjernede en hovedpine fra i går, smid et svar for point.
Avatar billede kaffe Nybegynder
04. januar 2005 - 19:50 #3
Selv tak.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester