我有一个表名为“Product_Master”的数据库,其列标题为“ProductID,ProductCode,ProductName,ProductDescription,LandingPrice,SellingPrice,Stock,ProductCategory”。
我的wpf窗口中有一个数据网格。
我能够将datagrid中的所有值填入数据库。
代码如下。
SqlCeCommand com = new SqlCeCommand("SELECT ProductCode FROM Products_Master WHERE ProductName =('" + txtAutoProductName.Text + "') OR ProductCode = ('" + txtProductCode.Text + "')", con);
try
{
SqlCeDataAdapter da = new SqlCeDataAdapter();
da.SelectCommand = com;
DataTable dt = new DataTable();
da.Fill(dt);
BindingSource bSource = new BindingSource();
bSource.DataSource = dt;
dgrdBilling.ItemsSource = bSource;
da.Update(dt);
}
catch (Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.Message, System.Windows.Forms.Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
我想使用colomn名称“Number,ProductCode,ProductName,Quantity,Tax,Total”自定义我的数据网格,并希望从不同的表中添加单个值。
如何做同样的事。
在下面添加
private void txtAutoProductName_TextChanged(object sender, EventArgs e)
{
SqlCeCommand com = new SqlCeCommand("SELECT * FROM Products_Master WHERE ProductName =('" + txtAutoProductName.Text + "') OR ProductCode = ('" + txtProductCode.Text + "')", con);
try
{
SqlCeDataAdapter da = new SqlCeDataAdapter();
BindingSource bSource = new BindingSource();
DataTable dt = new DataTable();
DataRow newRow = dt.NewRow();
da.SelectCommand = com;
da.Fill(dt);
bSource.DataSource = dt;
//dgrdBilling.ItemsSource = bSource;
dgrdBilling.ItemsSource = dt.DefaultView;
//dgrdBilling.Items.Add(bSource);
da.Update(dt);
newRow["ProductName"] = txtAutoProductName.Text;
newRow["ProductCode"] = bSource;
dt.Rows.Add(newRow);
}
catch (Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.Message, System.Windows.Forms.Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
答案 0 :(得分:1)
尝试使用.xaml进行自定义:
首先设置AutoGenerateColumns,然后使用正确的绑定添加所需的列。
DataGrid ItemsSource="{Binding Products}" AutoGenerateColumns="False" >
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Binding="{Binding Path=Column_name_in_table}"/>
</DataGrid.Columns>
这用于在代码隐藏.xaml.cs中添加行:
DataRow newRow = dt.NewRow();
newRow["ProductID"] = txtBox1.Text;
newRow["ProductCode"] = txtBox2.Text;
.
.
.
dt.Rows.Add(newRow);
如果您希望通过 DataTable 中的更改通知 DataGrid ,请设置网格 * ItemsSource *到 DataView 或 dt.DefaultView()
答案 1 :(得分:0)
以下是有关如何使用DataGrid的精彩教程。
http://wpftutorial.net/DataGrid.html
如果要定义自定义列,请设置AutoGenerateColumns =“False”。
<DataGrid ItemsSource="{Binding Customers}" AutoGenerateColumns="False" >
<DataGrid.Columns>
<DataGridTemplateColumn Header="Image" Width="SizeToCells" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Image Source="{Binding Image}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
在此测试中,标题名称为Image。
玩得开心。