Slette rækker i en DataGridView

Tags:    .net

Hej

Jeg skal slette nogle rækker i en DataGridView.
Mit sprog er Visual c# Express.
Efter flere timer på nettet er jeg kommet tæt på
denne løsning (som virker for andre men ikke mig):

private void Btn_SysDel_Click(object sender, EventArgs e)
{
foreach (DataGridView SelRows in
systemsDataGridView.SelectedRows)
{
systemsDataGridView.Rows.Remove(SelRows);
}
}

Meningen er at denne kode skal slette alle de markerede
rækker, men der kommer en fejlmelding.

Hvad gør jeg galt?



Nåh ja jeg glemte lige at sige at jeg sagtens kan slette
en række med:

DataGridView1.Rows.Remove(DataGridView1.CurrentRow);

Men hvordan løber man de valgte rækker igennem?



Indlæg senest redigeret d. 13.12.2007 16:12 af Bruger #7724
Hej

Der er lidt større semantik i det end umiddelbart bare
at slette currentRow.

Her er noget gammelt slam code til datagrid net 1.1

Dette skulle ihvertfald give dig en ide


ArrayList list = new ArrayList();
int sId;

private void Clientgrid_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
try {
if (e.Button == Windows.Forms.MouseButtons.Right) {
System.Windows.Forms.DataGrid.HitTestInfo hti;
hti = Clientgrid.HitTest(e.X, e.Y);
sPriority = Clientgrid(hti.Row, 0).ToString();
sId = Clientgrid(hti.Row, 1).ToString();
sFirmnamel = Clientgrid(hti.Row, 2).ToString();
sMailaddress = Clientgrid(hti.Row, 3).ToString();
sFname = Clientgrid(hti.Row, 4).ToString();
sLname = Clientgrid(hti.Row, 5).ToString();
sKatagori = Clientgrid(hti.Row, 6).ToString();
}
}
catch {

}
}

public void RemoveSelected()
{
sCounter = 0;
object tmp;
GetSelectedRows(list);
foreach ( tmp in list) {
sId = list.Item(sCounter).ToString;
oDatarow = sDsName.Tables("Postaddresser").Rows.Find(sId);
oDatarow.Delete();
sCounter += 1;
}
try {
updatePostaddresser();
}
catch {
}
}


private void GetSelectedRows(ArrayList list)
{
list.Clear();
CurrencyManager cm = this.BindingContext(Clientgrid.DataSource, Clientgrid.DataMember);
DataView dv = (DataView)cm.List;

for (sId = 0; sId <= dv.Count - 1; sId++) {
if (Clientgrid.IsSelected(sId)) {
list.Add(Clientgrid.Item(sId, 1));
}
}
}






t