【问题标题】:DataGrid repeats the data retrieved from database in a single row twiceDataGrid 在一行中重复从数据库中检索到的数据两次
【发布时间】:2017-03-24 07:26:59
【问题描述】:

我正在处理 WPF 中的一个销售点项目,我想将所有记录(与当前或最后一个客户 ID 相关联)检索到数据网格中。在从表中选择 * 并检索它时,我在其他项目中做了同样的工作。但是这次不知道为什么这段代码不起作用。我在我的问题中包含了输出图像,请看一下。

<DataGrid x:Name="dataGrid" ItemsSource="{Binding DataSource}" HorizontalAlignment="Left" Margin="115,312,0,0" VerticalAlignment="Top" Height="376" Width="864">
    <DataGrid.Resources>
        <Style TargetType="{x:Type DataGridColumnHeader}">
            <Setter Property="Background" Value="#1C75BC" />
            <Setter Property="Foreground" Value="White"/>
            <Setter Property="BorderBrush" Value="Black" />
            <Setter Property="BorderThickness" Value="1" />
            <Setter Property="Height" Value="20" />
        </Style>
    </DataGrid.Resources>
    <DataGrid.Columns>
        <DataGridTextColumn Header="BarCode" Binding="{Binding BarCode}" Width="*" />
        <DataGridTextColumn Header="ProductName" Binding="{Binding ProductName}"  Width="*"/>
        <DataGridTextColumn Header="UnitPrice" Binding="{Binding UnitPrice}" Width="*" />
        <DataGridTextColumn Header="SalePrice" Binding="{Binding SalePrice}" Width="*" />
        <DataGridTextColumn Header="Quantity" Binding="{Binding Quantity}" Width="*" />                       
    </DataGrid.Columns>
</DataGrid>
private void FillDataGrid(int counttt)
{
    SqlConnection connn = db.getConnection();
    connn.Open();
    string CmdString = string.Empty;
    //DateTime dateTime = DateTime.UtcNow.Date;
    //String d = (dateTime.ToString("dd/MM/yyyy"));
    CmdString = "SELECT BarCode, ProductName, UnitPrice, SalePrice, Quantity From CustomerSale WHERE CId = '" + counttt + "'";
    SqlCommand cmd = new SqlCommand(CmdString, connn);
    SqlDataAdapter sda = new SqlDataAdapter(cmd);
    DataTable dt = new DataTable("CustomerSale");
    sda.Fill(dt);
    dataGrid.ItemsSource = dt.DefaultView;
    connn.Close();
}

【问题讨论】:

  • 您的数据表中是否填充了数据?
  • 是的...但是数据每次重复两次,如输出图像所示

标签: c# wpf datagrid


【解决方案1】:

禁用DataGrid.AutoGenerateColumns。您在标记 (&lt;DataGrid.Columns&gt;) 中为每个数据属性创建了列,并且在设置 ItemsSource 时,DataGrid 还会为每个属性生成列,因为 AutoGenerateColumns 的默认值为 true

<DataGrid x:Name="dataGrid" AutoGenerateColumns="False" ItemsSource="{Binding DataSource}" ...

【讨论】:

    猜你喜欢
    • 2015-09-10
    • 2014-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-17
    相关资源
    最近更新 更多