DataGridView - Übersicht - Dataset

24/02/2009 - 20:51 von Oliver Stippe | Report spam
Hallo,

ich suche eine einfache gute Übersicht.

DataGridView dataGridView1 = new DataGridView();
DataTable dt = new DataTable ("Daten");

dt.Columns.Add(new DataColumn("Name"));
dt.Columns.Add(new DataColumn("Reich", typeof(bool)));
dt.Columns.Add(new DataColumn("Neffen", typeof(int)));
dt.Columns.Add(new DataColumn("Geburtsdatum", typeof(DateTime)));

dataGridView1.DataSource = dt;

DataRow dr = dt.NewRow();
dr[0] = "Test"
dr[1] = "ja";
dr[2] = 3;
dr[3] = "24.02.2009";
dt.Rows.Add(dr);

A) Bediener selektiert eine Zeile
DataGridViewRow cRow = masterDataGridView.CurrentRow;

Wie kann ich jetzt die einzelne Zellen auslesen?
A1) Ich weiß die Spaltennamen
so geht es nicht string s2 = cRow.Cells["IDMT"].ToString();
A2) Ich weiß die Indexe


B) Kann eine selektiere in ein Datasetstruktur gecastet werden?
DataGridViewRow cRow = masterDataGridView.CurrentRow;
B1) so geht es nicht. //Lebensmittel.MasterRow mRow =
(Lebensmittel.MasterRow)masterDataGridView.CurrentRow;

Hintergrund:
Wenn ich die Ref. herausbekomme, kann ich diese zur Laufzeit verwenden
und in eine Untertabelle einfügen.
Wenn ich nicht casten kann, geht das ja nicht.

C) Bediener selektiert mit der Maus
Zeile 3, Spalte 4
Dann möchte ich den Wert wissen.
Die aktuelle Zeile
Den Spaltennamen.
Evtl. noch den Typ, String, double, Datum
Wie?

D) Bediener selektiert mit der Maus
Spalte 4
Dann möchte ich die Werte wissen.
D1) Spaltenname
D2) foreach , durchlaufen aller Werte
Wie?

Danke für Tipps.

Grüße Oliver
 

Lesen sie die antworten

#1 Frank Dzaebel
24/02/2009 - 22:18 | Warnen spam
Hallo Oliver,

ich suche eine einfache gute Übersicht [...] DataGridView



ok, schon mal ein paar Antworten ...

DataGridView dgv = new DataGridView();
DataTable dt = new DataTable("Daten");

private void Form1_Load(object sender, EventArgs e)
{
dt.Columns.Add(new DataColumn("Name"));
dt.Columns.Add(new DataColumn("Reich", typeof(bool)));
dt.Columns.Add(new DataColumn("Neffen", typeof(int)));
dt.Columns.Add(new DataColumn("Geburtsdatum", typeof(DateTime)));
dgv.DataSource = dt;
DataRow dr = dt.NewRow();
for (int i = 0; i < 20; i++)
dt.Rows.Add("Test", true, i, new DateTime(2009, 2, 24));
Width = 500;
dgv.Width = 480; dgv.Height = this.Height - 70;
dgv.Top = 30;
dt.Rows.Add(dr);
Controls.Add(dgv);

Button btn = new Button();
btn.AutoSize = true;
btn.Text = "Bitte Zeile 3, Spalte 'Neffen' selektieren";
btn.Click += new EventHandler(btn_Click);
Controls.Add(btn);
dgv.CurrentCellChanged += new EventHandler(dgv_CurrentCellChanged);
dgv.AllowUserToAddRows = false;
}

void dgv_CurrentCellChanged(object sender, EventArgs e)
{
//C) Bediener selektiert mit der Maus
// Zeile 3, Spalte 4
// Dann möchte ich den Wert wissen.
MessageBox.Show("Neu selektierter Zellwert: " +
dgv.CurrentCell.Value.ToString());

// Die aktuelle Zeile
MessageBox.Show("aktuelle Zeile: " +
dgv.CurrentRow.Index.ToString());

// Den Spaltennamen.
MessageBox.Show("Spaltennamen = " +
dgv.CurrentCell.OwningColumn.Name);

// Evtl. noch den Typ, String, double, Datum
MessageBox.Show("Typ = " +
dgv.CurrentCell.OwningColumn.ValueType.ToString());

//D) Bediener selektiert mit der Maus
// Spalte 4
// Dann möchte ich die Werte wissen.
// D1) Spaltenname
MessageBox.Show("Spaltennamen = " +
dgv.CurrentCell.OwningColumn.Name);

// D2) foreach , durchlaufen aller Werte
StringBuilder sb = new StringBuilder();
int colIndex = dgv.CurrentCell.ColumnIndex;
for (int r = 0; r < dgv.Rows.Count; r++)
{
object val = dgv[colIndex, r].Value;
sb.AppendLine(r.ToString() + " = " +
(val == null ? "<Null>" : val.ToString()));
}
MessageBox.Show(sb.ToString());
}

void btn_Click(object sender, EventArgs e)
{
// A) Bediener selektiert eine Zeile
DataGridViewRow cRow = dgv.CurrentRow;
// Wie kann ich jetzt die einzelne Zellen auslesen?
// A1) Ich weiß die Spaltennamen
MessageBox.Show("Wert der Zelle in Spalte 'Neffen' =" +
cRow.Cells["Neffen"].Value.ToString());
//==

//> A2) Ich weiß die Indexe
int indexNeffen = 2;
MessageBox.Show("Wert der Zelle in Spalte 2 = " +
cRow.Cells[indexNeffen].Value.ToString());
//==}

___________________

(B) hatte ich eigentlich schon mal beschrieben ...
z.B. über CurrencyManager oder BindingManagerBase
als DataRowView und davon dann die Row ist
die zugeordnete DataRow. Aber dazu demnàchst mehr ..


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen