重新排序数据表中的列?

| 我正在使用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中的内容并将其反映在datatable中? 我认为我可以通过允许用户对显示表的datagridview中的列进行重新排序来解决该问题。 编辑: 假设我无法更改xsd文件。 那是,
    dataGridView1.AllowUserToOrderColumns = true;
但是,验证总是告诉我,在最后一个必需元素之后应该有一个“元素”。这意味着datagridview中数据列的移动未反映在数据表本身中。 为了通过验证,我相信我需要在相对于其他所有内容的相应位置插入该列。或者至少将其插入结尾,并在用户按下验证按钮时反映正确的顺序。 我在网上遇到了其他一些问题,告诉我尝试以下操作:
    Table.Columns[\"Column Name\"].SetOrdinal(NewIndex);
但是我还没有实现它。有什么想法可以防止上面的那行无效吗? =) 另外,我希望能够将数据表与用户在datagridview中所做的同步。那将是理想的。如果用户在datagridview中移动列,则数据表应反映该更改。 非常感谢您提供任何见解,如果需要,我将很乐意提供其他信息。谢谢! 真诚的 tf.rz (.NET 3.5 SP1,Visual Studio C#2008)     
已邀请:
        不要求用户按模式顺序输入数据,而是让系统根据模式自动确定适当的顺序,这是否更有意义?根据您的假设,您的架构似乎具有类似的构造,因此从该架构确定顺序应该并不困难。 例如,您可以将ѭ2保留为原样,匹配用户输入,并以任意顺序排列列。当您需要将数据输出到xml时,请检查模式文件并确定应输出的元素顺序。遍历元素列表,并从找到的ѭ2matching中输出匹配的列。 要处理模式文件并发现序列,可以使用
System.Xml.Schema.XmlSchema
,或者由于模式本身是xml,可以使用
XmlDocument
XPath
XDocument
等直接查询xml。     
        您尚未提供XSD,但我猜您正在使用
 <xs:sequence>.
改为使用
 <xs:all>
例如
 <xs:element name=\"person\">
  <xs:complexType>
   <xs:all minOccurs=\"0\">
    <xs:element name=\"firstname\" type=\"xs:string\"/>
    <xs:element name=\"lastname\" type=\"xs:string\"/>
    </xs:all>
  </xs:complexType>
 </xs:element>
上面的示例表明\“ firstname \”和\“ lastname \”元素可以以任何顺序出现,并且每个元素可以出现零或一次! 有关更多信息,请参见http://www.w3schools.com/schema/el_all.asp。     

要回复问题请先登录注册