beowolf
Goto Top

CSharp Spaltenbreite im Datagrid anpassen

Hallo Zusammen,

ich habe mit Visual C# Express eine kleines Programm geschrieben, dass mir Daten aus einer Access Datenbank ausliest und in einem DataGrid anzeigt. Diese Anzeige wird dann an den Drucker übergeben, der die Spalten so druckt (breite), wie sie im Datagrid angezeigt werden. Ich möchte jetzt im Quelltext die exakte Breite jeder einzeln Splate festlegen. Google brachte mich leider nicht weiter.

Hier ein Auschnitt aus dem Quelltext:

private void btn_Inventar_Click(object sender, EventArgs e)
{
sql = "SELECT * FROM Inventar ORDER BY Inventarnummer;";
FillDataGrid();
dataGrid.CaptionText = "Inventar";
}

private void FillDataGrid()
{
try
{
conn = new OleDbConnection(connectionString);
OleDbDataAdapter adapter = new OleDbDataAdapter(sql, conn);
ds = new DataSet();
adapter.Fill(ds);
dataGrid.DataSource = ds.Tables.DefaultView;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}

Ich hoffe Ihr habt eine Lösung.

Danke im Voraus

Gruß Steffen

Content-Key: 98604

Url: https://administrator.de/contentid/98604

Ausgedruckt am: 29.03.2024 um 15:03 Uhr

Mitglied: Kosh
Kosh 08.10.2008 um 09:48:42 Uhr
Goto Top
das schon versucht?

DataGridView dgvtest = new DataGridView();
dgvtest.Columns.Width = 50;
// oder
dgvtest.Columns["Spaltenname"].Width = 50;  
Mitglied: Beowolf
Beowolf 09.10.2008 um 08:34:22 Uhr
Goto Top
Hallo Kosh,

Vielen Dank für die schnelle Hilfe.
Deine Lösung funktioniert für ein DataGridView wunderbar.
Das Grundprogramm wurde jedoch vor meiner Zeit geschrieben und enthält ein DataGrid. Meines Wissens wurde das DataGridView erst mit der Version 2005 eingeführt. Im DataGrid wird eine Inventurliste mit fester breite angezeigt, welche exakt so Ausgedruckt werden kann.
Werden die Zeilen per "Hand" größer gezogen, werden sie jedoch in "Standardgröße" gedruckt.

Der Druckerklasse kann leider nur ein DataGrid und kein DataGridView übergeben werden. Deine Lösung funktioniert leider nur mit einem DataGridView.
Hast du noch ne Idee für das DataGrid?

Danke

Mfg Steffen
Mitglied: Kosh
Kosh 09.10.2008 um 15:10:25 Uhr
Goto Top
stimmt sorry. hab hier standardmässig VS2008.

Beim "alten" datagrid konnte man ein tablestyle definieren.

versuchs mal so:

DataGrid dgtest = new DataGrid();
DataGridTableStyle ts = new DataGridTableStyle();
ts.MappingName = "Tabelle";  
dgtest.TableStyles.Clear();
dgtest.TableStyles.Add(ts);
dgtest.TableStyles["Tabelle"].GridColumnStyles["Spalte"].Width = 50;  
Mitglied: Beowolf
Beowolf 10.10.2008 um 08:33:22 Uhr
Goto Top
Hallo Kosh,

nochmals vielen Dank.
Da es in meinem Projekt leider nicht funktioniert habe ich mal ein neues angelgt.

Hier der Quelltext:

private void button1_Click(object sender, EventArgs e)
{
DataGrid dataGrid = new DataGrid();
sql = "SELECT * FROM Raum;";
FillDataGrid();
}

private void FillDataGrid()
{
try
{
con = new OleDbConnection(connection);
OleDbDataAdapter da = new OleDbDataAdapter(sql, con);
ds = new DataSet();
da.Fill(ds);
dataGrid.DataSource = ds.Tables;

DataGridTableStyle ts = new DataGridTableStyle();
ts.MappingName = "Raum";
dataGrid.TableStyles.Clear();
dataGrid.TableStyles.Add(ts);
dataGrid.TableStyles["Raum"].GridColumnStyles["RaumID"].Width = 300;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}

}

Meine DataGrid wird mit den korrekten Werten gefüllt. Jeodch wird keine Spalte in der Größe geändert und auch kein Fehler gemeldet.
Zur Info:
Die Tabelle nennt sich Raum und beinhaltet die Spalten Raum und RaumID.

Was mache ich falsch?

Mfg Steffen
Mitglied: Kosh
Kosh 10.10.2008 um 08:55:33 Uhr
Goto Top
da hab ich grad was gefunden, wo der code etwas ausführlicher angeführt wird.

http://www.thescarms.com/dotnet/ColumnStyles.aspx

einfach etwas runterscrollen zu "For the C# coder:"
Mitglied: Beowolf
Beowolf 10.10.2008 um 09:24:22 Uhr
Goto Top
Damit funktionierts.

Vielen Dank und ein schönes Wochenende.

Gruß Steffen.