【发布时间】:2020-05-15 21:05:39
【问题描述】:
试图弄清楚如何为 XML 子节点的 vb.net 数据网格控件设置映射名称。数据源是使用...建立的。
VB.NET代码建立数据源dim ds as new DataSet()
ds.ReadXML(New System.IO.StringReader(xmlString))
DataGridView1.DataSource = ds
DataGridView1.DataMember = "task"
只要它们位于任务节点的正下方,我就可以映射下面 XML 字符串中的大多数节点,但是找不到将 client > clientname 映射到列的方法。
如果节点org > orgname 不匹配company name 和substatus > substatus 不匹配not started 或in progress,还需要弄清楚如何以编程方式从数据源中删除任何行。
<imsapi>
<status>0</status>
<statusmessage>Login OK</statusmessage>
<zoneresponse>
<tasks>
<task>
<contact>
<surname>Last Name</surname>
<givennames>First Name</givennames>
<userid>JScqTyVQXFwgCg==</userid>
</contact>
<contactname>User Name</contactname>
<org>
<orgid>JScqTyVRXFQgCg==</orgid>
<orgname>Business Unit Name</orgname>
</org>
<requestdatetime>2019/06/26 08:56:09</requestdatetime>
<status>Not Started</status>
<readtaskdatetime>2019/07/04 12:44:08</readtaskdatetime>
<description>Job description goes here...</description>
<custon>INTERNAL</custon>
<duedate>2020/01/13</duedate>
<lastupdated>2020/01/06</lastupdated>
<jobnumber>2387</jobnumber>
<duedatetime>2020/01/13 00:00:00</duedatetime>
<client>
<clientid>JScqTyVRXFQgCg==</clientid>
<clientname>Client Name</clientname>
</client>
<taskname>Job Name</taskname>
<taskid>JiYqUyVRPEslCg==</taskid>
<lastupdateddatetime>2020/01/06 10:39:44</lastupdateddatetime>
<requestdate>2019/06/26</requestdate>
<tasktype>Manufacturing Order</tasktype>
<substatus>
<substatusid>IyZaVywK</substatusid>
<substatus>Not Started</substatus>
</substatus>
</task>
</tasks>
</zoneresponse>
我曾尝试使用.、/ 和\ 尝试映射到子节点,但这些都没有生成映射。
【问题讨论】:
-
ReadXml 方法将不起作用。一旦超过 4 个级别的标签,数据集就会变得支离破碎,无法重新组合在一起。最好尝试使用 Xml Linq (XDocument) 执行此操作。我可以帮忙,但需要知道公司名称在哪里?
-
公司名称为
task > org > orgname,子状态为task > substatus > substatus谢谢。
标签: xml vb.net datagridview datasource