2016-12-28 50 views
0

我有一个例程查询访问数据库,然后将数据填充到数据网格。VB.net WPF动态数据网格

这是我目前有:

sql = "SELECT CCC1, CCC2, CCC3, CCC4, CCC5, CCC6, CCC7, CCC8, CCC9, CCC10, CCC11, CCC12, CCC13, CCC14, CCC15, CCC16, CCC17, CCC18, CCC19, CCC20 FROM CablesT " & 
      "WHERE (CableID = " & CableIDTextBox.Text & ")" 
da = New OleDbDataAdapter(sql, Con) 

ds.Tables.Clear() 'this is important to clear the table 
da.Fill(ds, "DisplaySpecificCable") 
WaterfallchartWindow.CableValuesDataGrid.ItemsSource = ds.Tables("DisplaySpecificCable").DefaultView 

我的XAML看起来像这样:

<DataGrid x:Name="CableValuesDataGrid" HorizontalAlignment="Left" Height="75" Margin="380,35,0,0" VerticalAlignment="Top" Width="1305" MinColumnWidth="20" CanUserReorderColumns="True" EnableColumnVirtualization="False" ColumnWidth="60" AlternatingRowBackground="Beige" VerticalGridLinesBrush="LightGray" HorizontalGridLinesBrush="LightGray" AutoGenerateColumns="False"> 
      <DataGrid.Columns> 
       <DataGridTextColumn Header="Parameters"></DataGridTextColumn> 
       <DataGridTextColumn Header="1mm²" Binding="{Binding CCC1}"></DataGridTextColumn> 
       <DataGridTextColumn Header="1.5mm²" Binding="{Binding CCC2}"></DataGridTextColumn> 
       <DataGridTextColumn Header="2.5mm²" Binding="{Binding CCC3}"></DataGridTextColumn> 
       <DataGridTextColumn Header="4mm²" Binding="{Binding CCC4}"></DataGridTextColumn> 
       <DataGridTextColumn Header="6mm²" Binding="{Binding CCC5}"></DataGridTextColumn> 
       <DataGridTextColumn Header="10mm²" Binding="{Binding CCC6}"></DataGridTextColumn> 
       <DataGridTextColumn Header="16mm²" Binding="{Binding CCC7}"></DataGridTextColumn> 
       <DataGridTextColumn Header="25mm²" Binding="{Binding CCC8}"></DataGridTextColumn> 
       <DataGridTextColumn Header="35mm²" Binding="{Binding CCC9}"></DataGridTextColumn> 
       <DataGridTextColumn Header="50mm²" Binding="{Binding CCC10}"></DataGridTextColumn> 
       <DataGridTextColumn Header="70mm²" Binding="{Binding CCC11}"></DataGridTextColumn> 
       <DataGridTextColumn Header="95mm²" Binding="{Binding CCC12}"></DataGridTextColumn> 
       <DataGridTextColumn Header="120mm²" Binding="{Binding CCC13}"></DataGridTextColumn> 
       <DataGridTextColumn Header="150mm²" Binding="{Binding CCC14}"></DataGridTextColumn> 
       <DataGridTextColumn Header="185mm²" Binding="{Binding CCC15}"></DataGridTextColumn> 
       <DataGridTextColumn Header="240mm²" Binding="{Binding CCC16}"></DataGridTextColumn> 
       <DataGridTextColumn Header="300mm²" Binding="{Binding CCC17}"></DataGridTextColumn> 
       <DataGridTextColumn Header="400mm²" Binding="{Binding CCC18}"></DataGridTextColumn> 
       <DataGridTextColumn Header="500mm²" Binding="{Binding CCC19}"></DataGridTextColumn> 
       <DataGridTextColumn Header="630mm²" Binding="{Binding CCC20}"></DataGridTextColumn> 

       </DataGrid.Columns> 

     </DataGrid> 

这将填充DataGrid行从开始第2列开始这正是我需要的,但我还想:

  1. 在“参数”列中,向行中添加静态文本。我无法想出一个办法来做到这一点。

  2. 通过另一个表的SQL查询向数据网格添加第二行。无法解释这一点。

帮助最受赞赏。

回答

0

为了您的第一点: SQL =“选择 '自己的静态代码' 为CCC0,CCC1,CCC2,CCC3,CCC4,CCC5,CCC6,CCC7,CCC8,CCC9,CCC10,CCC11,CCC12,CCC13, CCC14,CCC15,CCC16,CCC17,CCC18,CCC19,CCC20 FROM CablesT“& ”WHERE(CableID =“ & CableIDTextBox.Text & ”)“ DA =新OleDbDataAdapter的(SQL,CON)

ds.Tables.Clear() 'this is important to clear the table 
    da.Fill(ds, "DisplaySpecificCable") 
    WaterfallchartWindow.CableValuesDataGrid.ItemsSource = ds.Tables("DisplaySpecificCable").DefaultView 

然后

<DataGridTextColumn Header="Parameters" Binding="{Binding CCC0}"></DataGridTextColumn> 
      <DataGridTextColumn Header="1mm²" Binding="{Binding CCC1}"></DataGridTextColumn> 

这就是我理解你的问题的方式。希望它服务。

0

至于我明白你的问题:你可以在你的SQL staement尝试

选择 “静态文字” AS ParamColumn,CC1,CC2 ...

所以,你可以结合你以同样的方式正在其他专栏中做。

+0

值CCC1到CCC20是整数,或数据库中的实际值。数据库本身没有“静态文本”。 – Tofulover

+0

CCC1到CCC20的值是整数,或数据库中的实际值。说这是价值1,2,3,4等等。数据库本身没有“静态文本”。我想要在数据网格上显示的第一行,第1列为“电缆容量”,然后第2列为“1”,第3列为“2”等等。如何手动将数据网格的第一行和第一列的文本“电缆容量”插入? – Tofulover

+0

SQL可以管理“假”字段 – Xavier123456789