我正在编写一个程序来使用Linq填充DataGridView和DataGridViewCheckBoxColumn,我发现了一个问题。现在,我的代码是这样的:
var files = from file in library.Descendants("File")
where file.Element("Name").ToString().Contains(searchTerm)
select new
Selected = file.Element("Selected").Value,
Name = file.Element("Name").Value,
Size = file.Element("Size").Value)
};
dataGridView1.DataSource = files.ToList();
我已将DataGridView列“Selected”声明为DataGridViewCheckBoxColumn,并且我已将DataPropertyName与Selected属性相关联。但是,当我运行程序时,结果就是这样:
正如您所看到的,Selected列是空的,即使复选框也不是presente。
有人能帮助我吗?非常感谢
编辑: xml数据如下所示:
<Library>
<File>
<Selected>false</Selected>
<Name>101-madonna-girl gone wild.mp3</Name>
<Size>6338618</Size>
</File>
<File>
<Selected>false</Selected>
<Name>04 - Rock And Roll Music.mp3</Name>
<Size>3693642</Size>
</File>
</Library>
Selected列定义是:
答案 0 :(得分:0)
您应该将值解析为bool,如下所示:
bool.Parse(file.Element("Selected").Value)
编辑:您的代码如下所示:
var files = from file in library.Descendants("File")
where file.Element("Name").ToString().Contains(searchTerm)
select new
{
Selected = bool.Parse(file.Element("Selected").Value),
Name = file.Element("Name").Value,
Size = file.Element("Size").Value)
};
dataGridView1.DataSource = files.ToList();
答案 1 :(得分:0)
添加一个项目模板,如下所示
<asp:TemplateField HeaderText="Select">
<ItemTemplate></ItemTemplate>
</asp:TemplateField>
并在项目模板中添加复选框,然后使用OnRowDataBound =“GridViewRowEventHandler”来绑定复选框值。