Ne znam da li si mozda razmisljala o ListView resenju? Mozda je za nijansu komplikovanije ali je za oko prikladnija

Evo nekog koda na brzaka napravljenog.
Najpre ListView definises tako da postavis koje sve kolone zelis da ti se prikazuju u tvom ListView-u, a zatim kada zazelis da ga napunis podacima pozoves ovu funkciju:
Code:
public void ucitavanje(string sSQL) //sSQL je tvoj SELECT string kojim povlacic podatke iz odgovarajuce tabele
{
try
{
long totalRow = 0;
daLista.SelectCommand.CommandText = sSQL;
dsLista.Clear();
daLista.Fill(dsLista, Tabela);
totalRow = dsLista.Tables[Tabela].Rows.Count - 1;
listView.Items.Clear();
for (int i = 0; i <= totalRow; i++)
{
listView.Items.Add(new ListViewItem("" + dsLista.Tables[Tabela].Rows[i].ItemArray.GetValue(0).ToString(), 22));
listView.Items[i].SubItems.Add("" + dsLista.Tables[Tabela].Rows[i].ItemArray.GetValue(1).ToString());
listView.Items[i].SubItems.Add("" + dsLista.Tables[Tabela].Rows[i].ItemArray.GetValue(2).ToString());
listView.Items[i].SubItems.Add("" + dsLista.Tables[Tabela].Rows[i].ItemArray.GetValue(3).ToString());
listView.Items[i].SubItems.Add("" + dsLista.Tables[Tabela].Rows[i].ItemArray.GetValue(4).ToString());
... //koliko imas podataka toliko moras imati i ovih redova punjenja tvog listView-a
}
if (listView.Items.Count > 0)
{
try
{
listView.Items[0].Focused = true;
listView.Items[0].Selected = true;
listView.Items[0].EnsureVisible();
listView.Focus();
}
catch (ArgumentOutOfRangeException aooreE) { }
catch (NullReferenceException nreE) { }
}
}
catch (Exception ex) { }
}
Kada si napunila ListView ostaje ti samo da u Properties-u podesis da ti MultiSelect bude False i onda pozivas event:
Code:
private void lvOsnovniPodaci_MouseDoubleClick(object sender, MouseEventArgs e)
{
if (lvOsnovniPodaci.SelectedItems.Count > 0)
{
listView.Visible = false; // ne moras pozivati ni drugu formu. Dovoljno je samo da sakrijes tvoj listView i postavis da su ti potrebni elementi Visible = true
label1.Visible = true;
label2.Visible = true;
label3.Visible = true;
label4.Visible = true;
label5.Visible = true;
label1.Text = lvOsnovniPodaci.SelectedItems[0].SubItems[0].Text;
label2.Text = lvOsnovniPodaci.SelectedItems[0].SubItems[1].Text;
label3.Text = lvOsnovniPodaci.SelectedItems[0].SubItems[2].Text;
label4.Text = lvOsnovniPodaci.SelectedItems[0].SubItems[3].Text;
label5.Text = lvOsnovniPodaci.SelectedItems[0].SubItems[4].Text;
... // na ovaj nacin ucitavas podatke
}
}
Ja licno ne volim da radim sa DataSet-ovima i BindingSource-ovima jer dosta ogranicavaju rad sa podacima. Oni su ok ako je nesto jednostavno u pitanju ali za komplikovanija punjenja..... Nadam se da ce ti ovo pomoci
[Ovu poruku je menjao bigguy dana 16.07.2009. u 09:01 GMT+1]