【问题标题】:How to edit all selected rows of ultragrid如何编辑所有选定的超网格行
【发布时间】:2012-07-09 13:53:15
【问题描述】:

我在我的 Windows 应用程序中使用了一个 ultragrid,通过将它的 DataSource 属性设置为从该表返回的数据表来显示我的数据库表的记录。

行数可以是大约 100000 行。

现在我有两个问题:

1) 我想让用户选择这个网格的几行,然后全部编辑它们。为此,我需要知道这些选定行的哪些单元格具有相同的值,哪些没有,然后显示相同表格中的列。

我想到的第一个解决方案是通过 2 个 foreach 循环检查所有选定行的所有列。有没有更好的解决方案??

2)最后,当用户按下保存按钮时,更新应该应用到表上。最好的方法是什么? (使用IN命令或者sqldataadapter的UpdateCommand或者...)

【问题讨论】:

  • 一行或一列中的“相同值”单元格?
  • @M_Mogharrabi 请告诉我您使用的是哪个版本的 UltraGrid,因为您使用的版本可能不支持多行选择或编辑
  • @Nero,我的意思是在所有选定行的列中。
  • @HatSoft,我用过Net Advantage 10.2

标签: c# sql-server-2008 ultrawingrid


【解决方案1】:

根据我的分析,

1) 您可以根据要查看的所有列在超网格中进行分组并保存数据。将相似的列分组后会出现在一起,这将节省大量的数据分析时间和找出不同行中哪些列数据相同的时间。一旦你得到了类似数据的列表,你就可以通过 for each loop 甚至 for loop 轻松地处理它们,因为你将能够访问由此生成的行数。

2) 您应该考虑为此使用 System.Data.SqlClient.SqlBulkCopy。这是文档,当然网上也有很多教程。
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy.aspx 没有时应该避免IN。的记录更多,因为它会影响性能。如果你不想使用sqlbulkcopy,那么你也可以去ultragrid的UpdateData()(ultragrid的非常有用的特性)

【讨论】:

  • 感谢您的回复,但我不认为对列进行分组对我有用。请参阅我对@HatSoft 的评论。
【解决方案2】:

您可以使用 UltraGrid 提供的方法调用 UpdateData() 来更新所有多行,而无需逐行或逐单元跟踪更改

UpdateData method 更新网格中的任何修改信息,并将其发送给数据提供者。更新完成后,任何标记为已修改数据的行都将清除该标记。

UpdateMethod 需要从仍处于编辑模式的单元格中退出,这是一个错误,要解决它,您需要使用它,如下所示

ultraGrid1.PerformAction(Infragistics.Win.UltraWinGrid.UltraGridAction.ExitEditMode); ultraGrid1.UpdateData();

更多关于为什么以这种方式使用它的细节可以在这里找到http://devcenter.infragistics.com/Support/KnowledgeBaseArticle.Aspx?ArticleID=4220

要回答您的第二个问题,您必须以这种方式使用 UpdateData 方法

e.g.
private void ultraButton1_Click(object sender, EventArgs e)
{
    ultraGrid1.UpdateData();
    this.dbRowsTableAdapter.Update(this.testDataSet);
    ultraButton1.Enabled = false;
}

再一次,UltraGrid 似乎将其本地数据保持为纯粹,因此您必须调用 TableAdapter 的 Update 方法,这意味着您必须创建一个 DataSet 并用 SqlDataAdapter 填充它。

请参阅论坛,清楚地解释为什么 UltraGrid.UpdateData 方法不会在此处提交回数据库http://www.infragistics.com/community/forums/t/57161.aspx

【讨论】:

  • 感谢您的回复。但我想我无法以正确的格式提出我的问题...用户无法修改网格中的数据。他可以从网格中选择几行,然后通过按下编辑按钮将打开编辑表单,该表单应在相关文本框中显示那些选定行的相同值,其他文本框应为空。然后用户可以修改这些文本框,当他按下保存按钮时,信息应保存为所有选定的行.
  • 我的意思是,当您选择表单的多个控件时,Visual Studio 所做的事情,所以如果您查看属性面板,您会看到所选控件的相同属性具有值,但其他属性是空。如果我的英语不好,我希望我能说出我的意思并原谅我。
【解决方案3】:

我的第一个问题找不到任何解决方案,因此我使用循环来比较网格中所有选定的行并诊断常见值。 但我在第二个问题中使用了 SqlBulkCopy。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-10
    • 1970-01-01
    • 1970-01-01
    • 2013-04-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多