DataGridView不应该接受带有姓和名的重复ID



这是我的代码不应该在DataGridView中接受重复行,但在我的代码中,它是例外:

不应该接受重复的行这是我的datagridview,它不接受重复的ID,但保留字段来复制它不应该复制文件名,姓氏和职业也

我需要这样的输出

namespace Bind_DataGridView_Using_DataTable
{
public partial class Bind_DataGridView_Using_DataTable : Form
{
public Bind_DataGridView_Using_DataTable()
{
InitializeComponent();
}
DataTable table = new DataTable();
private void BtnAdd_Click(object sender, EventArgs e)
{
string idText = IDTxt.Text.Trim();
if (!string.IsNullOrEmpty(idText) && int.TryParse(idText, out int idValue))
{
if ((table.Select("Id = " + idValue)).Length == 0)
{
table.Rows.Add(idValue, fisrtTxt.Text.Trim(), SurNameTxt.Text.Trim(), ProfesTxt.Text.Trim());
//table.AcceptChanges();
dataGridView1.DataSource = table;
cleatTxts();
}
else
{
MessageBox.Show("Person Id already Exist");
}
}
else
{
label1.Text = "Person Id should not be empty && must be a valid int value";
}
}
}
}

用这样的列来区分表

table = table
.AsEnumerable()
.GroupBy(r => new 
{ 
FirstName = r.Field<string>("FirstName"), 
LastName = r.Field<string>("LastName"), 
Profession = r.Field<string>("Profession") 
})
.Select(group => group.First())
.CopyToDataTable();

我不知道这有什么困难。使用两个if语句,而不是一个复合if语句,然后IfID不重复,if名字和姓氏不重复,然后添加行。您需要记住,如果ID是重复的,那么就不需要检查名称。

if ((table.Select("Id = " + idValue)).Length == 0) {
if ((table.Select("FirstName = '" + firstTxt.Text.Trim() +
"' AND LastName = '" + SurNameTxt.Text.Trim() + "'")).Length == 0) {
// add  the row 
}
}
Note the single quote " ' " before/after the text box values.

最新更新