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

Printed on: April 29, 2024 at 04:04 o'clock

Member: Kosh
Kosh Oct 08, 2008 at 07:48:42 (UTC)
Goto Top
das schon versucht?

DataGridView dgvtest = new DataGridView();
dgvtest.Columns.Width = 50;
// oder
dgvtest.Columns["Spaltenname"].Width = 50;  
Member: Beowolf
Beowolf Oct 09, 2008 at 06:34:22 (UTC)
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
Member: Kosh
Kosh Oct 09, 2008 at 13:10:25 (UTC)
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;  
Member: Beowolf
Beowolf Oct 10, 2008 at 06:33:22 (UTC)
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
Member: Kosh
Kosh Oct 10, 2008 at 06:55:33 (UTC)
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:"
Member: Beowolf
Beowolf Oct 10, 2008 at 07:24:22 (UTC)
Goto Top
Damit funktionierts.

Vielen Dank und ein schönes Wochenende.

Gruß Steffen.