Hej Ännu en gång har Windows Forms FAQ visat sin förträfflighet. Den borde finnas som favorit hos alla som programmerar winforms Du behöver bara lägga till; >Obs, detta gäller windows form datagrid och inte Asp .NET. Det går inte att ändra kolumnbredden direkt på en DataColumn. Du måste lägga på en TableStyle som innehåller DataGridTextBoxColumns eller DataGridBoolColumns. Om du gör enligt följande så kommer det att fungera: Att den kod du använder fungerar det vet jag. Har själv tittat på denna. på mappningen skriver du path och när du fyller datasetet skriver du paths, har du kollat detta Ha, så glad jag blir. Det var själva mappningen som du föreslog.Ändra bredd på en kolumn för datagrid
Jag har faktiskt problem med att sätta "Column Width" för en given column som
genereras när jag kör datasource = myDataRow
Om min DR innehåller typ 3 kolumner: id, path, foldername så vill jag att path
skall tex ha width=100 och dom andra text 30.
Nån som vet hur jag greppar denna kolumn och sätter bredden? Vet att jag kan
ta preferedwidth (nånging) men jag vill i detta fall bara att ena kolumnen (som jag
vet har mer text än de övriga) skall vara bredare en normalt.
Obs, detta gäller windows form datagrid och inte Asp .NET.
H.
Marcus CSv: Ändra bredd på en kolumn för datagrid
http://www.syncfusion.com/FAQ/WinForms/FAQ_c44c.asp#q792qSv: Ändra bredd på en kolumn för datagrid
<asp:BoundColumn DataField="adress" SortExpression="adress" HeaderText="adress">
<HeaderStyle Width="100px"></HeaderStyle></asp:BoundColumn>Sv: Ändra bredd på en kolumn för datagrid
;-)Sv: Ändra bredd på en kolumn för datagrid
Private Sub SkapaSkal(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
myTable = New DataTable("MinTabell")
myDataSet = New DataSet
myGrid = New System.Windows.Forms.DataGrid
Dim kundId = New DataColumn("KundId", GetType(Integer))
Dim kundNamn = New DataColumn("KundNamn", GetType(String))
Dim val = New DataColumn("Välj")
myTable.Columns.Add(kundId)
myTable.Columns.Add(kundNamn)
myTable.Columns.Add(val)
myDataSet.Tables.Add(myTable)
FyllData()
AddTableStyle()
PlaceraDataGrid()
End Sub
Public Sub FyllData()
Dim i As Integer
Dim dr As DataRow
For i = 0 To 2
dr = myTable.NewRow
dr("kundId") = i
'Lägg till raden till Tabellen
myTable.Rows.Add(dr)
Next
myTable.Rows(0)("kundNamn") = "Ludvig Börjesson"
myTable.Rows(1)("kundNamn") = "Magnus Persson"
myTable.Rows(2)("kundNamn") = "Elisabeth Anderson"
myGrid.SetDataBinding(myDataSet, "MinTabell")
End Sub
Public Sub AddTableStyle()
myGrid.Size = New Size(440, 200)
Dim tsl As New DataGridTableStyle
tsl.MappingName = "MinTabell"
tsl.AlternatingBackColor = Color.LightBlue
Dim idKol As New DataGridTextBoxColumn
idKol.MappingName = "kundid"
idKol.HeaderText = "KundId"
idKol.Width = 100
tsl.GridColumnStyles.Add(idKol)
Dim namnKol As New DataGridTextBoxColumn
namnKol.MappingName = "kundnamn"
namnKol.HeaderText = "Kundnamn"
namnKol.Width = 250
tsl.GridColumnStyles.Add(namnKol)
Dim valKol As New DataGridBoolColumn
valKol.MappingName = "Välj"
valKol.HeaderText = "Välj"
valKol.Width = 50
tsl.GridColumnStyles.Add(valKol)
myGrid.TableStyles.Add(tsl)
End Sub
Public Sub PlaceraDataGrid()
myGrid.Location = New Point(24, 50)
myGrid.CaptionText = "Viktiga kunder"
Me.Controls.Add(myGrid)
End Sub
End ClassSv: Ändra bredd på en kolumn för datagrid
men ta min tex.
<code>
Dim oadapt As New SqlDataAdapter(strSql, SqlConn)
Dim ods As New DataSet
oadapt.Fill(ods, "Paths")
DataGrid1.SetDataBinding(ods, "Paths")
</code>
Om denna strsql sats ger mig 3 columner; path, size, lastwritetime
kolumnen för path vill jag ska vara 150 och resterande default.
Har försökt med mycket, bla
<code>
DataGrid1.TableStyles.Clear()
Dim widgetTable As New DataGridTableStyle
' Sets the MappingName to the class name plus brackets.
widgetTable.MappingName = "Path"
' Creates three column styles.
Dim modelColumn As New DataGridTextBoxColumn
modelColumn.MappingName = "Path"
modelColumn.HeaderText = "Pathen"
modelColumn.Width = 150
widgetTable.GridColumnStyles.Add(modelColumn)
DataGrid1.TableStyles.Add(widgetTable)
DataGrid1.SetDataBinding(ods, "Test")
</code>
Vet inte varför det inte funkar....
Marcus CSv: Ändra bredd på en kolumn för datagrid
Sv: Ändra bredd på en kolumn för datagrid
Så här blev resultatet och då funkar det:
<code>
'Skapa connection osv. Här döper jag mitt ds till paths. paths skall sedan användas
'för att mappa/binda själva datagriden.mappingname
oadapt.Fill(ods, "paths")
DataGrid1.TableStyles.Clear()
Dim BigUserTable As New DataGridTableStyle
'Här anger jag alltså själva ds namnet
BigUserTable.MappingName = "paths"
' Creates PAth column styles.
Dim PathColumn As New DataGridTextBoxColumn
'Här däremot mappar jag med columnen Path som finns i dataset:et
PathColumn.MappingName = "Path"
PathColumn.HeaderText = "Pathen"
PathColumn.Width = 360
'Lägger till DataGridTextBoxColumn (path) till DataGridTableStyle collectionen
BigUserTable.GridColumnStyles.Add(PathColumn)
'Lägger till DataGridTableStyle i tabelstyles collectionen i datagriden.
DataGrid1.TableStyles.Add(BigUserTable)
'Uppdaterar och fyller datagriden med ds
DataGrid1.SetDataBinding(ods, "paths")
</code>
Funkade.. tack ska ni ha...
Marcus C