【问题标题】:ASP.NET dataset getdataBy Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign key constraintsASP.NET 数据集 getdataBy 无法启用约束。一行或多行包含违反非空、唯一或外键约束的值
【发布时间】:2011-05-16 17:28:10
【问题描述】:

嗨 我有一个非常简单的网络表单 我在这个表单上有一个按钮和一个 gridview 以及一个包含链接表 bill、docket、docket_bill 等的数据集。

在按钮上单击我使用以下代码

  protected void button_click(object sender, EventArgs e)
{
billTableAdapter Billta = new billTableAdapter();
gridview1.datasource = Billta.getTop20Bills();
gridview1.databind()'
}

现在当我点击按钮时,我收到以下错误

"未能启用约束。一个或 更多行包含违反的值 非空、唯一或外键 约束”

但是,当我将代码更改为

 protected void button_click(object sender, EventArgs e)
    {
    billTableAdapter Billta = new billTableAdapter();
    gridview1.datasource = Billta.getdata();
    gridview1.databind()'
    }

它工作正常。 billTa.getData() 从数据集中获取所有行并显示在网格视图中。但是当我添加一个查询并只选择几列时,它会给我上述错误。

知道这里有什么问题吗?

SQL Scripts for getdata() = select * from bill

SQL script for getTop20Bills = select top 20 bill_id, bill_amount from bill

【问题讨论】:

  • 为您的方法 getdata() 和 getTop20Bills() 添加问题 SQL 脚本

标签: c# asp.net gridview dataset


【解决方案1】:

我猜你的 billTableAdapter 中有两个以上的列。在 getTop20Bills() 中,您只选择您需要的两列。您必须在第二个脚本中添加缺失的列。或者您可以创建仅包含这两列的新表适配器并将网格视图绑定到新适配器

【讨论】:

  • 你是对的......这正是原因。但我现在有点困惑。所以说我想根据用户的选择显示不同列的gridview。用户至少有 25 个选项来显示数据,这是否意味着我必须添加 25 个不同的 tableadapter,每个 tableadapter 都包含不同列的组合?不过这对我来说没有意义:(
  • 您可以尝试使用控件ObjectDataSources。这将在设计时将 gridview 与您的表模式绑定。在运行时,您可以将不感兴趣的列设置为 false。
猜你喜欢
  • 2012-03-30
  • 1970-01-01
  • 2015-12-13
  • 2012-11-10
  • 2012-01-16
相关资源
最近更新 更多