使用Linq使用DataGridViewCheckBoxColumn填充DataGridView

时间:2014-02-11 22:01:42

标签: c# linq datagridview

我正在编写一个程序来使用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属性相关联。但是,当我运行程序时,结果就是这样:

enter image description here

正如您所看到的,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列定义是: enter image description here

2 个答案:

答案 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”来绑定复选框值。