呵呵
这就已经有了
如果发生约束异常的话
ex.Message=“列XXX被约束为是唯一的。值XXX已存在,要更正该值么?”
如果想显示其他信息的话,
捕获异常用
try
{}
catch(Exception ex)
{
  //MessageBox.Show(ex.Message);
  MessageBox.Show(str);//str你想提示用户的话
}

解决方案 »

  1.   

    记得原先有人问过类似的问题,但是他的问题是Column为空值的异常,后来采用变通的方法解决的(绕过系统的异常,在DataTable的ColumnChanged事件中自己判断),但是如果是Unique 的话,自己比较太麻烦,而且如果数据量大时,会比较慢。
      

  2.   

    to  Firestone2003(笨笨小猪)
      这样是行不通的。我并没有提交到数据库中。只是在窗体上的DataGrid上进行编辑。数据提交到数据源DataTable时发生的异常。结构体中try{}中,写啥呢?
      

  3.   

    to DoerSoft
       能说得详细一些么?
      

  4.   

    to  Firestone2003(笨笨小猪)
      这样是行不通的。我并没有提交到数据库中。只是在窗体上的DataGrid上进行编辑。数据提交到数据源DataTable时发生的异常。结构体中try{}中,写啥呢?
    ============================================================
    try{}中放你会出异常的语句,就是数据提交的那些语句咯。
    在Catch中可以什么也不做,用throws抛出你自定义异常。上层的程序调用这个方法时,再捕捉这个异常。
      

  5.   

    在用户进入某个Cell时,保留该Cell内的数据,在用户焦点离开该Cell的事件里判断该数据时候存在。
      

  6.   

    to fangxinggood(JustACoder)
       可能是我没有描述清楚。情况是这样的,我的窗体上有个DataGrid,他的数据源是mytable,mytable中列“IDCard”是唯一约束。当你在窗体上编辑DataGrid的时候,数据是自动提交到数据源的,不用写任何代码的,所以我不知道Try里改写什么,还望再指点。
      

  7.   

    讓你輸入的“IDCard” 的這一列的值到你的mytable 做一次循環,如果有相同的值就給出提示,問是否更新...
         int lint_row=0;
    while(lint_row < ldst.Tables[0].Rows.Count)
    {
    if (mytable.Rows[lint_row]["IDCard"]='你輸入行的IDCard值')
    {
    System.Windows.Forms.MessageBox.Show("是否更新...");
                               ///這裡可以寫一此代碼做你相要的處理...
            } }
      

  8.   

    to zwxrain(xrain)
       这种做法是可以的,是迂回的方法,但是如果表中记录很多的时候,效率比较差,每次输入都要遍历整个表。请问还有没有其他方法阿
      

  9.   

    异常处理的效率更低的!所以,如果不原意进行循环比较的话。您可以在datagrid数据绑定同时将数据唯一那列数据放进一个Hashtable并维护他,Hashtable的查找效率还是比自己写比较代码的效率要高的。当然这样的代价是又多维护这个东东了。