【发布时间】:2017-02-12 22:10:08
【问题描述】:
我正在以这种方式将项目从数据库加载到我的DataGrid(在表单加载时):
dataGridArticles.ItemsSource = null;
dataGridArticles.ItemsSource = listCurrentArticles;
我可以将项目添加到我的数据网格列表中,并且我可以通过按 DEL 键来删除它们数据网格会自动将其从列表中删除>。
但是当我在作为数据网格源的列表中输入项目时,我也在为每个项目设置 OrdinalNumber,例如,当我将新项目添加到列表中时,我正在做下一件事:
article.OrdinalNumber = GetCurrentlyMaxOrdinalNumber()+1;
所以如果我一个接一个地添加项目,序数将是 1,2,3,4,5... 等等,像这样(标记为红色):
我的存储过程从文章表中返回最大序数:
CREATE DEFINER=`root`@`localhost` PROCEDURE `ArticleGetNextCodeNumber`()
BEGIN
Select ifnull(max(OriginalArticleCode),0)
from articles;
END
当我向列表中添加新项目时,会发生以下情况: 我正在为新文章设置下一个序数和其他一些属性:
private void btnSaveChangesOnArticle_Click(object sender, RoutedEventArgs e)
{
try
{
if (newItem)
{
Article newArticle = new Article();
newArticle.ArticleCode = txtArticleCode.Text.Trim();
newArticle.OriginalArticleCode = Convert.ToInt32(ArticlesController.Instance.GetNextArticleCode()) + 1; // Here I'm setting new article ordinal number
newArticle.Title = txtArticleTitle.Text.Trim();
newArticle.Price = Convert.ToDecimal(txtPrice.Text.Trim());
var lastInserted = ArticlesController.Instance.Save(newArticle);
MessageBox.Show("Operation Successful.");
listCurrentArticles.Add(lastInserted);
dataGridArticles.ItemsSource = null;
dataGridArticles.ItemsSource = listCurrentArticles;
}
}
}
}
我现在想知道,当用户按 DELETE KEY 从我的数据网格中删除某些项目时,我该如何重新组织我的序数,因为如果我向我的数据网格添加 5 个项目,并且如果用户删除第二个项目,我的订单可能看起来像这样:1 3 4 5.. insted of 1 2 3 4
所以我的问题是伙计们,我该如何重新组织它,当某些事情发生变化以使其始终保持顺序时(所以也许我不需要在数据库中保留序数,因为这对我来说并不重要,我使用它只是因为更好的 UI 外观,向用户显示他向 DataGrid 添加了多少项目)。
非常感谢, 干杯!
【问题讨论】: