DropDownList与xml数据绑定的问题。

dream_river 2003-09-30 09:36:53
我将Exchange中的数据存储为xml格式,想将xml数据与DropDownList控件绑定。

private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
MSXML2.XMLHTTP30Class objGetFlowsXmlHttp = new MSXML2.XMLHTTP30Class();
MSXML2.DOMDocument30Class objFlowsXmlDoc = new MSXML2.DOMDocument30Class();
MSXML2.IXMLDOMNodeList objFlowsXmlNodeList;
string bstrSearchUrl;
string bstrSql;
string bstrSearchWebDav;

//获得查询路径
bstrSearchUrl = "http://oa/public/系统管理/FlowDef";

//创建查询语句,查询语句的搜索内容为流程类名
//其中查询字段已在Exchange中事先定义了
bstrSql = "SELECT " + '"' + "Flow" + '"' + " FROM " + '"' + bstrSearchUrl + '"';

//创建WEBDAV查询请求
bstrSearchWebDav = "<D:searchrequest xmlns:D = 'DAV:'>";
bstrSearchWebDav += "<D:sql>";
bstrSearchWebDav += bstrSql;
bstrSearchWebDav += "</D:sql>";
bstrSearchWebDav += "</D:searchrequest>";

//发送WEBDAV查询请求
objGetFlowsXmlHttp.open("SEARCH",bstrSearchUrl,false,"superpassword","123");
objGetFlowsXmlHttp.setRequestHeader("Content-Type","text/xml; charset='UTF-8'");
objGetFlowsXmlHttp.setRequestHeader("depth","0");
objGetFlowsXmlHttp.setRequestHeader("Translate","f");
objGetFlowsXmlHttp.send(bstrSearchWebDav);

//得到Exchange返回的以XML形式表现的查询结果
objFlowsXmlDoc.load(objGetFlowsXmlHttp.responseXML);

//从返回的结果中取得需要的数据:流程类名
objFlowsXmlNodeList = objFlowsXmlDoc.documentElement.selectNodes("a:response/a:propstat/a:prop");

//将数据与DropDownList控件 SelFlow 绑定
SelFlow.DataSource = objFlowsXmlNodeList;
SelFlow.DataBind();
}

可是控件显示的是System._comObject。value值也是这个东西
我将数据绑定换成

for(int i=0; i<=objFlowsXmlNodeList.length; i++)
{
SelFlow.Items.Add(objFlowsXmlNodeList[i].childNodes[0].text);
}
页面出错,是不是再循环中不能objFlowsXmlNodeList[i].childNodes[0].text这样引用对象呀??
...全文
52 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
dream_river 2003-10-08
  • 打赏
  • 举报
回复
谢谢saucer(思归)。
阿拉丁 2003-09-30
  • 打赏
  • 举报
回复
眼前有分捞不着,高手解答在上头!^_^
saucer 2003-09-30
  • 打赏
  • 举报
回复
try

for(int i=0; i<=objFlowsXmlNodeList.length; i++)
{
SelFlow.Items.Add(objFlowsXmlNodeList[i].text);
}

or

SelFlow.DataSource = objFlowsXmlNodeList;
SelFlow.DataTextField = "Value";
//or
SelFlow.DataTextField = "text";
SelFlow.DataBind();


树猫 2003-09-30
  • 打赏
  • 举报
回复
DataSet ds = new DataSet();
ds.ReadXml("fileFullPath");
树猫 2003-09-30
  • 打赏
  • 举报
回复
你先将xml转换成DataSet不好吗?
saucer 2003-09-30
  • 打赏
  • 举报
回复
the index of the nodelist is from 0 to objFlowsXmlNodeList.length - 1, not from 0 to objFlowsXmlNodeList.length
dream_river 2003-09-30
  • 打赏
  • 举报
回复
呵呵,我看不懂呀,望saucer明示
saucer 2003-09-30
  • 打赏
  • 举报
回复

for(int i=0; i<=objFlowsXmlNodeList.length; i++)
===> ^^^^^^
for(int i=0; i<objFlowsXmlNodeList.length; i++)
dream_river 2003-09-30
  • 打赏
  • 举报
回复
to saucer(思归)
第一个for循环报错,我试过了。但把循环中的objFlowsXmlNodeList[i].chilidNodes[0].text换成objFlowsXmlNodeList[0].chilidNodes[0].text就不报错了,但列表中的text始终是第一个节点得值。不知道为什吗不能用[i]来引用当前对象。
第二种方法我也试过了,输出来的不是text和value,而是System._comObject这个东西。

62,025

社区成员

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

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

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

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