在 WPF C# 中将单个项添加到数据网格
本文关键字:数据 数据网 网格 添加 单个项 WPF | 更新日期: 2023-09-27 18:37:10
我有一个数据库,表名"Product_Master",列标题为"产品ID,产品代码,产品名称,产品描述,着陆价格,销售价格,股票,产品类别"。
我的 wpf 窗口中有一个数据网格。
我能够填充数据网格将数据库中的所有值。
代码如下。
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);
}
我想使用列名称"编号、产品代码、产品名称、数量、税金、总计"自定义我的数据网格,并希望从不同的表中添加单个值。
如何做同样的事情。
下面添加
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);
}
}
尝试在 .xaml 中进行自定义:
首先设置自动生成列,然后使用适当的绑定添加所需的列。
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);
如果要在数据表中收到有关更改的通知数据网格,请将网格 *ItemsSource* 设置为数据视图或 dt。默认视图()
下面是如何使用 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>
在此考试标头中,名称为图像。
玩得愉快。