求助:如何将XML数据动态绑定至Gridview

cheniwantyou 2011-02-17 04:49:37
用C#在命令行写了个简单的类对指定格式XML的题库实现增删改、随机抽取的功能 ,
但不知如何在ASP.NET里绑定至Gridview模板中绑定XML数据,哥们帮帮忙咧~~
...全文
363 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 steves_zhao 的回复:]
http://www.cnblogs.com/ziyiFly/archive/2008/09/24/1297841.html
写字楼里写字间,写字间中程序员;
程序人员写程序,又将程序换酒钱;
酒醒只在屏前坐,酒醉还来屏下眠;
醉酒醒来日复日,屏前屏下年复年;
但愿老死电脑间,不愿鞠躬老板前;
奔驰宝马贵者趣,公交自行程序员;
别人笑我太疯癫,我笑自己命太贱;
但见满……
[/Quote]
++
refuly 2011-02-18
  • 打赏
  • 举报
回复
楼主的思路不错,因为如果直接使用DataSet去读取XML,对于XML数据源的格式是有要求的。如果使用XMLDocument对象读取XML文档到DataTable,好处一是可以读取任意格式的XML文档;好处二是DataTable的结构可以自行编码定义,非常灵活。

其实本来我也打算这样回答的,既然楼主已经做出来了,就当我是灌水吧,呵呵,恭喜了。
cheniwantyou 2011-02-18
  • 打赏
  • 举报
回复
嗯,~都对。我今天在类是这样写的: 读取XML数据到DATATABLE ,然后在页面将返回的DATATABLE绑定至Gridview(使用模板列),就跟数据库绑定一样。很好.
huangwenquan123 2011-02-17
  • 打赏
  • 举报
回复
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:BoundField DataField="number" HeaderText="number" />
<asp:BoundField DataField="title" HeaderText="title" />
<asp:BoundField DataField="a" HeaderText="a" />
<asp:BoundField DataField="b" HeaderText="b" />
<asp:BoundField DataField="c" HeaderText="c" />
<asp:BoundField DataField="d" HeaderText="d" />
<asp:BoundField DataField="cr" HeaderText="cr" />
</Columns>
</asp:GridView>

            DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath("xml.xml"));
GridView1.DataSource = ds.Tables["question"];
GridView1.DataBind();

<?xml version="1.0" encoding="utf-8"?>
<exam>
<pager>
<question>
<number>1</number>
<title>aaa</title>
<A>a</A>
<b>b</b>
<c>c</c>
<d>d</d>
<cr>a</cr>
</question>
<question>
<number>2</number>
<title>bbb</title>
<A>aa</A>
<b>bb</b>
<c>cc</c>
<d>dd</d>
<cr>aa</cr>
</question>
</pager>
</exam>
unling 2011-02-17
  • 打赏
  • 举报
回复
string url = Server.MapPath(".../aa.xml");
StreamReader sRead = new StreamReader(url, System.Text.Encoding.GetEncoding("GB2312"));
XmlDataDocument datadoc = new XmlDataDocument();
datadoc.DataSet.ReadXml(sRead);
this.Gridview.DataSource = datadoc.DataSet.Tables[0].DefaultView;
this.Gridview.DataBind();
datadoc = null;
sRead.Close();
楼主试试吧
wuyq11 2011-02-17
  • 打赏
  • 举报
回复
LINQ TO XML获取数据
DATASET.READXML
huaph 2011-02-17
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 fangxuan 的回复:]
string url = Server.MapPath(".../aa.xml");
StreamReader sRead = new StreamReader(url, System.Text.Encoding.GetEncoding("GB2312"));
XmlDataDocument datadoc = new XmlDataDocume……
[/Quote]


StreamReader 是服务器返回然后读取的.
但是为什么会出现没有根元素?....


以下是返回的XML:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<GetAccountBalanceResponse xmlns="https://webservices.baidu.com">
<GetAccountBalanceResult>
<BalanceResult>
<TransactionAmount>decimal</TransactionAmount>
<TransactionCreditAmount>decimal</TransactionCreditAmount>
<TransactionId>int</TransactionId>
<AccountNumber>string</AccountNumber>
<CreditBalance>decimal</CreditBalance>
<Balance>decimal</Balance>
</BalanceResult>
<BalanceResult>
<TransactionAmount>decimal</TransactionAmount>
<TransactionCreditAmount>decimal</TransactionCreditAmount>
<TransactionId>int</TransactionId>
<AccountNumber>string</AccountNumber>
<CreditBalance>decimal</CreditBalance>
<Balance>decimal</Balance>
</BalanceResult>
</GetAccountBalanceResult>
</GetAccountBalanceResponse>
</soap:Body>
</soap:Envelope>

yangyalin8425 2011-02-17
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 hualilihua 的回复:]

引用 5 楼 steves_zhao 的回复:
http://www.cnblogs.com/ziyiFly/archive/2008/09/24/1297841.html
写字楼里写字间,写字间中程序员;
程序人员写程序,又将程序换酒钱;
酒醒只在屏前坐,酒醉还来屏下眠;
醉酒醒来日复日,屏前屏下年复年;
但愿老死电脑间,不愿鞠躬老板前;
奔驰宝马贵者趣,公交自行程序员;
别人……
[/Quote]
XmlDataSource dds = new XmlDataSource();
dds.DataFile = Server.MapPath("stdentInfo.xml");//xml文件
gvInfo.DataSource = dds;
gvInfo.DataBind();
白云任去留 2011-02-17
  • 打赏
  • 举报
回复
string url = Server.MapPath(".../aa.xml");
StreamReader sRead = new StreamReader(url, System.Text.Encoding.GetEncoding("GB2312"));
XmlDataDocument datadoc = new XmlDataDocument();
datadoc.DataSet.ReadXml(sRead);
this.Gridview.DataSource = datadoc.DataSet.Tables[0].DefaultView;
this.Gridview.DataBind();
datadoc = null;
sRead.Close();
回头是岸 2011-02-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 steves_zhao 的回复:]
http://www.cnblogs.com/ziyiFly/archive/2008/09/24/1297841.html
写字楼里写字间,写字间中程序员;
程序人员写程序,又将程序换酒钱;
酒醒只在屏前坐,酒醉还来屏下眠;
醉酒醒来日复日,屏前屏下年复年;
但愿老死电脑间,不愿鞠躬老板前;
奔驰宝马贵者趣,公交自行程序员;
别人笑我太疯癫,我笑自己命太贱;
但见满……
[/Quote]

真有才
lhl888 2011-02-17
  • 打赏
  • 举报
回复
可以参考下对xml的操作
Steves_Zhao 2011-02-17
  • 打赏
  • 举报
回复
http://www.cnblogs.com/ziyiFly/archive/2008/09/24/1297841.html
写字楼里写字间,写字间中程序员;
程序人员写程序,又将程序换酒钱;
酒醒只在屏前坐,酒醉还来屏下眠;
醉酒醒来日复日,屏前屏下年复年;
但愿老死电脑间,不愿鞠躬老板前;
奔驰宝马贵者趣,公交自行程序员;
别人笑我太疯癫,我笑自己命太贱;
但见满街漂亮妹,哪个归得程序员
huaph 2011-02-17
  • 打赏
  • 举报
回复
同求.如果要绑定的是从web Service返回的XML 的话.怎么接收?和操作返回的XML呢?
而返回的XML应该是种泛型集合
软件研发服务 2011-02-17
  • 打赏
  • 举报
回复
vs2008里有直接绑定数据源的,省你写代码啊,,很简单的。。。
cheniwantyou 2011-02-17
  • 打赏
  • 举报
回复
不好意思,补充一下,XML层次是这样的:
<exam>
<pager>
<question>
<number>1</number>
<title>aaa</title>
<A>a</A>
<b>b</b>

<c>c</c>

<d>d</d>
<cr>a</cr>
</question>
</pager>
</exam>

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧