我正在使用xsd文件来验证xml文件。在xsd文件中,只有少数元素是必需的,其余是可选的。然而,它是连续的,因此元素在数据表中出现的顺序很重要。在考虑用户可能遇到的几个场景之后,我想出了一个解决问题的案例。对数据表中的列进行重新排序?
案例如下: 例如, 在xsd文件中有6个元素A,B,C,D,E,F。只需要A,C和D. 用户从A,C,D开始。我允许用户添加一个名为B的列。 但是,它会在末尾附加:A,C,D,B。因此,由于它是顺序的,它不会验证。
所以我的问题是,如何在A和C之间插入B以便xsd验证通过?或者有没有其他的方式来重新排序datagridview中的东西,并反映在数据表中?
我想我可以通过允许用户重新排列表格显示在datagridview中的列来解决问题。
编辑: 假设我不能改变xsd文件。
也就是说,
dataGridView1.AllowUserToOrderColumns = true;
但是,验证总是对我说的最后一个必要元素之后的“元素”进行了展望。这意味着datagridview中datacolumn的移位并未反映在数据表本身中。
为了通过验证,我相信我需要在相应的地方插入列,它是相对于其他任何东西。或者至少在最后插入它,并在用户按下确认按钮时反映正确的顺序。
我已经遇到一些其他的东西在网上告诉我要尝试的东西,如:
Table.Columns["Column Name"].SetOrdinal(NewIndex);
但我还没有付诸实施。如果上述行不起作用,任何想法? =) 此外,我希望能够将数据表与用户在datagridview中执行的操作同步。这将是理想的。如果用户移动datagridview中的列,则数据表应反映该更改。
任何洞察力非常感谢,我很乐意提供额外的信息,如果需要。谢谢!
真诚, tf.rz
(.NET 3.5 SP1,Visual Studio的C#2008)
哇,这太简单了。可悲的是我从来没有想过这件事。我一定会着手,看看我将如何实施这样的任务。它不应该太难。谢谢您的帮助!我会让你知道它是怎么回事。 ;) – 2011-06-28 15:29:39
什么离合器,经过一些调整和测试100%工作。 XPath是一位神。我找到了解决问题的办法,但你肯定让我开始了。非常感谢!享受50代表! ;) – 2011-06-28 21:05:29
@ tf.rz我很高兴它为你工作! – 2011-06-29 02:53:27