- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 DevExpress GridControl 创建一个表单,使用户能够输入一些数据。网格绑定(bind)到 DataTable
,其中一列定义为唯一的数据源。
DataTable dtDetail = new DataTable();
dtDetail.Columns.Add("ProductID", typeof(int));
dtDetail.Columns.Add("ProductName", typeof(string));
dtDetail.Columns.Add("OrderQty", typeof(int));
dtDetail.Columns.Add("LossTolerance", typeof(decimal));
dtDetail.Columns["ProductID"].Unique = true;
gridView.DataSource = dt;
通常我们可以使用以下代码添加行并处理约束冲突:
try
{
dtDetail.Rows.Add(1, "Some product name", 10, 2);
}
catch (ConstraintException ex)
{
// The default ex.Message is something like: Column 'ProductID' is constrained to be unique. Value xxxx is already present.
// I need to display this message in my local language.
}
我设计的表单是一个数据输入表单,因此数据来自最终用户通过网格。当用户添加行时,dtDetail.Rows.Add
方法以某种方式被调用,我不知道如何正确处理 ConstraintException
,因为添加的行来自网格,而不是直接来 self 的代码。
当要添加重复的ProductID
时,ex.Message中会出现一个MessageBox
,里面的文字完全一样,有两个YesNo按钮,询问我们是否要更正值与否。
我的目标是保持DataTable
内的所有行都是唯一的。我需要处理 ConstraintException
以便我可以向最终用户显示自定义错误消息。我搜索了一些关于 SO 和 Microsoft 文档的帖子,例如这些帖子:
但它并没有给我关于如何做到这一点的线索。
有人可以帮我怎么做吗?实际上,我的代码运行正常,我只需要处理异常。对不起,我的英语不好。英语不是我的母语。谢谢。
最佳答案
正如 Oleg 在评论部分评论使用 ValidateRow
事件时,我能够使用与该事件实际相关的另一个事件来解决我的要求,即 InvalidRowException
private void gridView_InvalidRowException(object sender, DevExpress.XtraGrid.Views.Base.InvalidRowExceptionEventArgs e)
{
// Get the type of exception
if (e.Exception.GetType() == typeof(ConstraintException))
{
// Get the unique constraint column
using (DataColumn constraintColumn = ((UniqueConstraint)dtDetail.Constraints[0]).Columns[0])
{
// Get the value that violates unique constraint
object value = ((DataRowView)e.Row).Row[constraintColumn];
DialogResult dr = XtraMessageBox.Show(string.Format("Kolom {0} diatur sebagai Unique. Nilai {1} telah ada sebelumnya. Apakah Anda ingin memperbaiki barisnya?", constraintColumn.ColumnName, value.ToString()), "Informasi", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
if (dr == DialogResult.Yes)
{
// No action. User can correct their input.
e.ExceptionMode = DevExpress.XtraEditors.Controls.ExceptionMode.NoAction;
}
else
{
// Duplicate row will be removed
e.ExceptionMode = DevExpress.XtraEditors.Controls.ExceptionMode.Ignore;
}
}
}
}
通过使用上面的代码,我可以处理 ConstraintException
并为我的用户显示自定义错误消息。
谢谢。
关于c# - 从 GridView 添加 DataRow 时如何捕获 ConstraintException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58073562/
我有一个独立的应用程序,它在将平面文件导入 SQL 数据库之前对其进行数据检查。 在这样的上下文中,抛出 System.Data.ConstraintException 是否有意义? (这个例子是人为
我有一个独立的应用程序,它在将平面文件导入 SQL 数据库之前对其进行数据检查。 在这样的上下文中,抛出 System.Data.ConstraintException 是否有意义? (这个例子是人为
我对 Rails 完全陌生,我几乎不知道自己在做什么。但。问题是:使用 Devise 注册新用户会导致: SQLite3::ConstraintException: column email is n
我正在尝试学习 Ruby on Rails,但遇到了一个需要帮助的问题。我想做的是创建一个带有表单的“项目经理”,但是当我填写表单并点击提交时,会显示以下错误: ActiveRecord::State
我在更新/创建 CoverImage 对象时使用 saveOrUpdate()。偶尔我会在主键上遇到约束冲突。 org.hibernate.exception.ConstraintViolationE
我正在使用 C#/Mono 访问 Sqlite 数据库。 以下查询在任何数据库应用程序中都能正常工作,但当我尝试加载结果时 DataTable 一直提示。 这是一个片段 cmd.Command
我正在使用 DevExpress GridControl 创建一个表单,使用户能够输入一些数据。网格绑定(bind)到 DataTable,其中一列定义为唯一的数据源。 DataTable dtDet
我有两个表 orders 和 orderdetails 表订单(PK = id,orderno 上的 UNIQUE 索引) |id|orderno| | 1|1000 | | 2|1001 |
我希望有人能够帮助解决我的 SQLite 数据库问题。 在使用 C# 查询我的 SQLite 数据库时,我收到了 ConstraintException。完整的异常消息是“无法启用约束。一行或多行包含
我有一个创建艺术家并将其与用户关联的 resque 工作。用户 has_and_belongs_to_many :艺术家,艺术家 has_and_belongs_to_many :用户。 def se
我觉得我遗漏了一些非常明显的东西,但我正在做的是测试 destroy在我的用户模型上路由。 当我尝试和 @user.destroy ,我得到以下异常: *** ActiveRecord::Invali
给定以下 ASP.NET MVC Controller 代码: [HttpPost] public ActionResult Create(FormCollection collect
我正在关注 Rails 教程。我在 ch。 6,我在使用 SQLite3 时遇到一个奇怪的错误(为了记录,我使用的是 sqlite 版本 1.3.10,而教程使用的是 1.3.9) 我在运行 rake
在我的模型中,项目拥有并属于许多用户,因此他们有一个连接表 projects_users。当我插入线 @project.members += User.find params[:member_ids]
我正在将 Devise 和 Paperclip 与 Rails 4 应用程序一起使用。 我正在尝试找出无法为同一用户添加另一个 pin 的原因。据我从错误中了解到,它具有用户独特性。我对吗?如何修复它
当我运行 rake db:seed 时,有些东西坏了! 我收到以下错误: ray@ray-virtual-machine:~/ticketee$ rake db:seed rake aborted!
我刚刚安装了 devise gem,但出现以下错误: Error: AccountsControllerTest#test_should_update_account: ActiveRecord::R
我正在使用Sqlite开发Rails应用程序,并且有一个与其他几个表关联的用户表。尝试在Users中重命名列时,运行rails db:migrate时出现主题错误。 我在这里看到很多类似问题的帖子,但
我正在尝试对我的应用程序运行单元测试,我最初的错误是“表 xx 没有名为 yy 的列”,因此在我的 yml 文件中我将字段更改为 id。但是,现在它给了我这个错误: CarsControllerTes
我是 Ruby on Rails 的新手。我尝试制作标签并可以选择删除标签。当我想销毁标签时,我收到此错误 SQLite3::ConstraintException: FOREIGN KEY cons
我是一名优秀的程序员,十分优秀!