【问题标题】:Datagrid Is Showing Rows With Nothing In Them using c# and sql server 2008Datagrid 使用 c# 和 sql server 2008 显示没有任何内容的行
【发布时间】: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


【解决方案1】:

您已经将 itemsource 设置为 tblCart,因此当您在 xaml 绑定中键入它时,它实际上正在寻找 tblCart.tblCart.Title(显然不存在)。

以下应该可以解决问题(假设您的集合确实包含数据)

 <DataGridTextColumn Header="Title" Width="250" Binding="{Binding Title}"/>
 <DataGridTextColumn Header="Price" Width="57" Binding="{Binding Price}"/>

【讨论】:

  • 很好的回复效果很好。知道如何在添加行后更新数据网格吗?
猜你喜欢
  • 1970-01-01
  • 2020-03-24
  • 2014-07-21
  • 2016-02-19
  • 2020-06-16
  • 2021-02-05
  • 2018-10-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多