【发布时间】:2013-04-27 06:19:38
【问题描述】:
所以我一直在研究这个数据网格的东西并遇到了另一个问题。所以,我在一个文本框上有这个 textchanged 事件,它接受条形码扫描仪输入并将该 UML 编号与电影表 (tblMovies) 匹配。它获取该行并将其插入到购物车表 (tblCart) 中。发生这种情况时,我试图在 wpf 窗口中使用数据网格,在使用 c# 的视觉工作室中,在接收新输入时在其中填充 tblCart。所以我遇到的问题是它会显示一个空行,单元格中没有任何内容。有人知道为什么吗?
这是我的 XAML 中的数据网格:
<DataGrid Name="dg1" AutoGenerateColumns="False" Height="323" HorizontalAlignment="Left" Margin="26,25,0,0" VerticalAlignment="Top" Width="332" >
<DataGrid.Columns>
<DataGridTextColumn Header="Title" Width="250" Binding="{Binding tblCart.Title}"/>
<DataGridTextColumn Header="Price" Width="57" Binding="{Binding tblCart.Price}"/>
</DataGrid.Columns>
</DataGrid>
这是我在 .cs 中启动的数据网格:
public partial class SalesScreen : Window
{
DataSet ds = new DataSet();
SqlConnection cn = new SqlConnection("Data Source=******;Initial Catalog=*****;User ID=**; Password=**********");
SqlDataAdapter da;
DataTable dt;
public SalesScreen()
{
InitializeComponent();
cn.Open();
String cmdString = "Select Title, Price from tblCart";
SqlCommand cmd = new SqlCommand(cmdString, cn);
da = new SqlDataAdapter(cmd);
dt = new DataTable("tblCart");
da.Fill(dt);
dg1.ItemsSource = dt.DefaultView;
}
这是 textchanged 方法:
private void TBox_TextChanged(object sender, TextChangedEventArgs e)
{
String cmdString = "INSERT INTO tblCart(Title, GenreID, Price, Year, UML, Quantity) Select Title, GenreID, Price, Year, UML, Quantity FROM tblMovies WHERE UML = '" + BarcodeReader.Text + "'";
SqlCommand cmd = new SqlCommand(cmdString, cn);
da = new SqlDataAdapter(cmd);
dt = new DataTable("tblCart");
da.Fill(dt);
dg1.ItemsSource = dt.DefaultView;
}
再次道歉,如果马虎或做错了,但我仍在学习。对于为什么我的表格显示为空单元格的任何帮助将不胜感激。
【问题讨论】:
-
SQL Injection alert - 您应该不将您的 SQL 语句连接在一起 - 使用 参数化查询 来避免 SQL 注入
-
@marc_s 不错的总结。关于问题:哪些字段是空的?还是完整的空行?
标签: c# sql wpf sql-server-2008 datagrid