DataGridView (c# neuling)

Hi,

ich hab noch eine Frage zu dem Thema:

bisher hab ich das folgendermaßen gemacht:

ich hab eine Anfrage, mit Hilfe eines Readers, an meine Datenbank gesendet. Den Inhalt des Readers hab ich in eine ArrayList geschrieben. Die ArrayList hab ich dann wiederum zur DataTable hinzugefügt. Zuletzt hab ich dann die DataTable als DataSource der DataGridView angegeben.

Das erscheint mir etwas umständlich und ist bestimmt nicht gerade sauberer Programmier-Stil.

Gibt es nicht die Möglichkeit den Reader an ein DataGridView-Objekt zu binden?

Lg Chriss
 
Hallo,
die Daten aus deiner Datenbank, kannst du mit nem sql-String und einem TableAdapter ins DataSet füllen, von dort aus dann einfach ins DataGridView:

Du ziehst aus der toolbox eine BindingSourceControl ins Form1, selektierst es und wählst Projektdatenquelle im Eigenschaftenfenster. Datenbank wählen, testen und keine tabellen aussuchen, das ergibt ein leeres dataset.

public partial class Form1 : Form
{
MySqlConnection oVerbindung = new MySqlConnection();
public Form1()
{
string sVerbindung = "server=localhost;uid=userX;pwd=mypassword;database=myDatabase;";
oVerbindung = new MySqlConnection(sVerbindung);

//Falls du die Verbindung speichern hast lassen, kannst du sie auch aus der Config holen:

//oVerbindung = Properties.Settings.Default.myDatabaseConnectionString;


InitializeComponent();
string sql = "SELECT * FROM mytable ";
DataSetFuellen(sql, oVerbindung);
}
private void DataSetFuellen(string sql, MySqlConnection oVerbindung)
{
MySqlDataAdapter da = new MySqlDataAdapter(sql, oVerbindung);
DataTable data = new DataTable();
da.Fill(data);
dataGridView1.DataSource = data;
dataGridView1.Show();
}
}

Grüsse, Tecla
 
Zuletzt bearbeitet:
Schön guten Tag,

Auf Grundlage dieses Threads habe ich mich auch mal an einen DataGridView versucht, jedoch lässt sich dieser nich füllen.

Hier einfach mal der Code:

Code:
DataTable userTable = new DataTable("user");

DataColumn column = new DataColumn();
column.DataType = System.Type.GetType("System.String");
column.ColumnName = "name";
userTable.Columns.Add(column);

DataRow dRow = userTable.NewRow();
dRow["name"] = "Thomas";

userTable.Rows.Add(dRow);

DataGrid dataGrid1 = new DataGrid();
dataGrid1.SetDataBinding(userTable, "user");

user.DataSource = dataGrid1;

Es passiert rein gar nix, außer das die freie Zeile aus dem DataGridView verschwindet und ich nur noch die Zeilenübrschrift sehe. Wo liegt der Fehler?

Gruß soyo
 
Hab das Problem selbst gelöst und nun kommt gleich das nächste:

Code:
DataColumn colScheine = new DataColumn();
colScheine.DataType = System.Type.GetType("System.Int32");
colScheine.ColumnName = "scheine";
colScheine.Caption = "Eigene Scheine";
userTable.Columns.Add(colScheine);
Warum wird als Spalten-Überschrift nicht "Eigene Scheine" angezeigt, anstatt "scheine"?
 
Hi,

soweit hat alles geklappt, aber nach dem soyo darauf hingewiesen hat, dass die Spalten-Namen anstatt die Spalten-Überschriften angezeigt werden ist mir aufgefallen dass dies bei mir auch so ist.

Des Weiteren habe ich noch ein paar Fragen, wie krieg ich die erste Spalte aus dem DataGrifView weg, also die mit dem grauen Hintergrund die einen Pfeil anzeigt wenn man drauf klickt.

Und wie kann ich die Tabelle so konfigurieren, dass der User nur eine komplette Zeile selektieren kann und nicht die einzelnen Zellen?


Lg chriss
 
Des Weiteren habe ich noch ein paar Fragen, wie krieg ich die erste Spalte aus dem DataGrifView weg, also die mit dem grauen Hintergrund die einen Pfeil anzeigt wenn man drauf klickt.
Das Property DataGridView.RowHeadersVisible sollte dir da helfen.
Und wie kann ich die Tabelle so konfigurieren, dass der User nur eine komplette Zeile selektieren kann und nicht die einzelnen Zellen?
Diese Funktionalität stellt das DataGridView nicht zur Verfügung. Du musst entweder in den SelectionChanged Events die entsprechende Zeile selbst selektieren oder einen ListView nutzen. Da gibts das Property FullRowSelect
Mit dem RowHeader wäre das jedoch möglich. Klickt der Anwender auf den Header wird die komplette Zeile selektiert
 
Hallo Chris

Das kannst du im Eigenschaftenfenster des Datagrids einstellen:
SelectionMode > FullRowSelect
RowHeaderVisible > false

oder per Code:

dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
dataGridViewAdressat.RowHeadersVisible = true;

Die Spalten beschriften:
dataGridView1.Columns[0].HeaderText = "Name 1";

Grüsse, Tecla
 
Zurück