2015-11-07 96 views
0

我正在使用我的c#windows应用程序,并且这是第一次使用tdbgrid(component1)现在我想阻止用户在从数据库验证它之后输入重复值,以下是代码我在(BeforeColUpdate)事件中使用它:防止C1TrueDBGrid中的重复条目

bool ExitValue = false; 
private void C1TrueDBGrid_BeforeColUpdate(object sender, C1.Win.C1TrueDBGrid.BeforeColUpdateEventArgs e) 
{ 
    if (e.Column.Name == "Groups Code") 
    { 
     for (int currentRow = 0; currentRow < this.C1TrueDBGrid.Rows.Count - 1;currentRow++) 
     { 
      string rowToCompare = this.C1TrueDBGrid.Splits[0].DisplayColumns[C1TrueDBGrid.Col].DataColumn.CellValue(currentRow).ToString(); 
      for (int otherRow = currentRow+1 ; otherRow < this.C1TrueDBGrid.Rows.Count; otherRow++) 
      { 
       bool DuplicatedRow = true; 
       string Row = this.C1TrueDBGrid.Splits[0].DisplayColumns[C1TrueDBGrid.Col].DataColumn.CellValue(otherRow).ToString(); 
       if (Row!=rowToCompare) 
       { 
        ExitValue = false; 
        break; 
       } 
       if (DuplicatedRow) 
       { 
        C1TrueDBGrid.Splits[0].DisplayColumns[tgdGroupsUsers.Col].DataColumn.Value = DBNull.Value; 
        MessageBox.Show("Sorry: but this item(s) is already Exists ", "Error Info", MessageBoxButtons.OK, MessageBoxIcon.Information); 
        ExitValue = true; 
        e.Cancel = true; 
       } 
      } 
     }   
    } 
    else 
    { 
     //Cleare Feilds 
     C1TrueDBGrid.Splits[0].DisplayColumns[C1TrueDBGrid.Col].DataColumn.Value = null; 
     e.Cancel = true; 
    } 
} 

如果不是duplictad下面是代码至极的(AfterColUpdate)事件IAM使用它:

private void C1TrueDBGrid_AfterColUpdate(object sender, C1.Win.C1TrueDBGrid.ColEventArgs e) 
{ 
    if (!ExitValue) 
    { 
     int indexRow = this.C1TrueDBGrid.RowBookmark(this.C1TrueDBGrid.Row); 
     this.C1TrueDBGrid[indexRow, 0] = CSystemUsers.GroupsCode; 
     this.C1TrueDBGrid[indexRow, 0] = CSystemUsers.EngName; 
    } 
} 

在此先感谢...

+0

请格式化你的代码 – Backs

回答

0

ComponentOne的回答我的问题:

private void c1TrueDBGrid1_BeforeColUpdate(object sender, C1.Win.C1TrueDBGrid.BeforeColUpdateEventArgs e) 
{ 
    if (e.ColIndex == 1) 
    { 
     for (int i = 0; i < c1TrueDBGrid1.RowCount; i++) 
     { 
     if (c1TrueDBGrid1.Editor.Text == c1TrueDBGrid1[i, e.ColIndex].ToString()) 
     { 
      MessageBox.Show("Sorry: but this item(s) already Exists", "Error Info", MessageBoxButtons.OK, MessageBoxIcon.Information); 
      e.Cancel = true; 
     } 
    } 
} 
} 

链接: http://our.componentone.com/groups/topic/how-do-i-prevent-duplicate-entries-in-c1truedbgrid/ 希望这可以帮助别人的未来: