高分求解:c# winform 中,用datagridview控件和xml 数据绑定的方法
我是通过调用函数的方式,调用得到一组xml格式的数据,现在希望将这些数据和datagridview控件进行绑定,并在最后添加一个button列,进行其他处理。假设xml的...
我是通过调用函数的方式,调用得到一组xml格式的数据,现在希望将这些数据和datagridview控件进行绑定,并在最后添加一个button列,进行其他处理。
假设xml的数据如下:
"<Root>"
"<Record YXMC='电力工程' BH='电力1202' XM='张三' XB='男' ifzc='未报到' />";
"<Record YXMC='机械工程' BH='机械1202' XM='李四' XB='女' ifzc='已报到'/>";
"<Record YXMC='机械工程' BH='机械1202' XM='王五' XB='男' ifzc='已报到'/>";
"</Root>"
请问该如何将他们与datagridview进行绑定?最后一列的button控件又该如何设置?
网上又很多直接和数据库绑定交互的方式,xml的却很少见~~~ 展开
假设xml的数据如下:
"<Root>"
"<Record YXMC='电力工程' BH='电力1202' XM='张三' XB='男' ifzc='未报到' />";
"<Record YXMC='机械工程' BH='机械1202' XM='李四' XB='女' ifzc='已报到'/>";
"<Record YXMC='机械工程' BH='机械1202' XM='王五' XB='男' ifzc='已报到'/>";
"</Root>"
请问该如何将他们与datagridview进行绑定?最后一列的button控件又该如何设置?
网上又很多直接和数据库绑定交互的方式,xml的却很少见~~~ 展开
2个回答
展开全部
其实你可以换个思路,咱们不管数据从哪来的,只要是类似DataTable或是List<T>这样的,咱们就可以把它绑定到DataGridView上,再添加一个按钮列上去,甚至不用按钮列,直接添加一个右键菜单,无非就是对选中行进行增、删,改等工作嘛,这些应该是和从数据库查询数据填充到DataGridView后是一样的。不同的地方只是读取和写入数据的不同,一个是操作数据库,一个是操作XML文件,基本是一样的,只不过代码上有一点小小的差异而己。一点浅见,抛砖引玉,如果还有什么想问的请追问或者是HI
更多追问追答
追问
xml 文档里的数据,如何保存到 datatable中?
之前没用过xml,所以,有点懵
追答
嗯,好久不写了,有点忘了,就用你这个数据写个,你试试:
static List LoadFromXML(string path)
{
using(stream stream =GetResourceStream(path))
using(XmlReader xmlReader=new XmlTextReader(stream))
return(from data in xDocument.Load(xmlReader).Element("Root").Elements("Record")
select Data.CreateData((string)data.Attribute("YXMC"),
(string)data.Attribute("BH"),
(string)data.Attribute("XM"),
(string)data.Attribute("XB"),
(string)data.Attribute("ifzc"))).ToList();
}
Data是自定义的类,手写代码,未验证,应该没什么问题,你试试,有问题再提出来
2012-08-19
展开全部
string str = @"<Root>
<Record YXMC='电力工程' BH='电力1202' XM='张三' XB='男' ifzc='未报到' />
<Record YXMC='机械工程' BH='机械1202' XM='李四' XB='女' ifzc='已报到'/>
<Record YXMC='机械工程' BH='机械1202' XM='王五' XB='男' ifzc='已报到'/>
</Root>";
var matches = Regex.Matches(str, @"(\w+='([^']+)'\s*){5}").Cast<Match>();
var source = from temp in matches
select new
{
YXMC = temp.Groups[2].Captures[0].Value,
BH = temp.Groups[2].Captures[1].Value,
XM = temp.Groups[2].Captures[2].Value,
XB = temp.Groups[2].Captures[3].Value,
ifzc = temp.Groups[2].Captures[4].Value
};
datagridview1.DataSource=source;
<Record YXMC='电力工程' BH='电力1202' XM='张三' XB='男' ifzc='未报到' />
<Record YXMC='机械工程' BH='机械1202' XM='李四' XB='女' ifzc='已报到'/>
<Record YXMC='机械工程' BH='机械1202' XM='王五' XB='男' ifzc='已报到'/>
</Root>";
var matches = Regex.Matches(str, @"(\w+='([^']+)'\s*){5}").Cast<Match>();
var source = from temp in matches
select new
{
YXMC = temp.Groups[2].Captures[0].Value,
BH = temp.Groups[2].Captures[1].Value,
XM = temp.Groups[2].Captures[2].Value,
XB = temp.Groups[2].Captures[3].Value,
ifzc = temp.Groups[2].Captures[4].Value
};
datagridview1.DataSource=source;
追问
record 记录的数目是可变的,可能是一条,也可能是多条
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询