使用Csharp .NET4.0和ms visual studio 2010。
我有一个非常错误的问题,也就是说至少会让我感到害怕。
我有一个datagridview,显示最畅销的部分联盟表。该计划的作用是允许用户根据自己的知识和判断来改变联盟的位置。
输入数字后,用户可以保存更新MS SQL本地服务器上的表的进度。但在保存信息之前,它会运行一种方法,检查列中是否包含输入信息的重复数字。
如果它检测到任何重复项,则拒绝保存,并通过另一个较小的datagridview显示部件名称通知用户。然后,用户可以在此处选择显示的部分,并自动导航并突出显示主数据网格视图,以便用户进行适当的更改。
现在问题如下,如果用户输入重复值,然后单击datagridview中的else where,然后单击save,程序将正确运行。
但是如果用户输入重复的值并直接进行保存,则会导致错误。基本上它会保存用户输入数据之前的数据,也不会显示任何重复值。
我认为这是因为用户输入数据的单元格尚未更新。
如果有帮助,我可以提供一些代码。如果这是常见问题的常见问题,那就徘徊吧?
许多问候
CODE:
private void saveMyProgressToolStripMenuItem_Click(object sender, EventArgs e)
{
DialogResult result2 = MessageBox.Show("Do you wish to save you progress?",
"Important Question",
MessageBoxButtons.YesNo);
if (result2 == DialogResult.Yes)
{
CheckForDuplicate();
if (dupi == true)
{
CountMyGrid();
dupi = false;
}
else
{
Task t = new Task(() => SaveMyWorkI());
t.Start();
dupi = false;
}
}
}
上面的代码根据重复方法布尔切换来检查是否可以保存。
public void CheckForDuplicate()
{
DataGridViewRowCollection coll = ParetoGrid.Rows;
DataGridViewRowCollection colls = ParetoGrid.Rows;
IList<String> listParts = new List<String>();
int count = 0;
foreach (DataGridViewRow item in coll)//379
{
foreach (DataGridViewRow items in colls)//143641
{
count++;
if ((items.Cells["NewPareto"].Value != null) && (items.Cells["NewPareto"].Value != DBNull.Value))
{
if ((items.Cells["NewPareto"].Value != DBNull.Value) && (items.Cells["NewPareto"].Value != null) && (items.Cells["NewPareto"].Value.Equals(item.Cells["NewPareto"].Value)))
{
if ((items.Cells["Part"].Value != DBNull.Value) && (items.Cells["Part"].Value != null) && !(items.Cells["Part"].Value.Equals(item.Cells["Part"].Value)))
{
listParts.Add(items.Cells["Part"].Value.ToString());
dupi = true;
}
}
}
}
}
MyErrorGrid.DataSource = listParts.Select(x => new { Part = x }).ToList();
}
如果您原谅对null类型的常量检查,则此部分将循环检测任何重复项。
如果您需要更多代码,请尽快提出。
答案 0 :(得分:1)
尝试应用
.Refresh()
函数到DataGridView。如果这不起作用,请尝试
.EndEdit()
请注意,您应该在保存信息之前应用此权利。