0

我需要用 DataTable 对象作为 DataSource 填充 DataGrid。它很完美,我可以做到这一点,但是我坚持每行中的 CheckBox 要求。我知道 DataGridView 提供 DataGridViewCheckBoxColumn 但是,我希望 DataGrid 也一样。

我有一个解决方案,像这样 -

        DataTable dt = new DataTable("Books");

        DataColumn dc1 = new DataColumn("Name", typeof(System.String));
        DataColumn dc2 = new DataColumn("ISBN", typeof(System.String));
        DataColumn dc3 = new DataColumn("Price", typeof(System.Int32));
        DataColumn dc4 = new DataColumn("Author", typeof(System.String));

        DataColumn dcSelectToDelete = new DataColumn("Select");
        dcSelectToDelete.DataType = System.Type.GetType("System.Boolean");
        dcSelectToDelete.DefaultValue = false;

        dt.Columns.Add(dc1);
        dt.Columns.Add(dc2);
        dt.Columns.Add(dc3);
        dt.Columns.Add(dc4);
        dt.Columns.Add(dcSelectToDelete);

        drd.DataSource = dt;

但我不确定这段代码的正确性。如果它有效,我不知道如何处理复选框的 Checked 事件。

请为 DataGrid(不是 DataGridView)建议正确的解决方案。

如果我将按某个列表填充数据表。如何在每列中动态添加 CheckBox?

4

2 回答 2

0

您如何使用 DataGridTemplateColumn(如在 WPF DataGrid 中)并在其中放置一个带有 Checked 和 UnChecked 事件或任何事件的复选框,然后在后面的代码中处理它。例如在 WPF 中添加 DataGrid.Columns

<DataGridTemplateColumn  >
     <DataGridTemplateColumn.CellTemplate>
           <DataTemplate>
                <CheckBox x:Name="chkSelect" Checked="chkSelect_Checked" Unchecked="chkSelect_Unchecked" />
           </DataTemplate>
     </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn> 

此外,您还没有将技术指定为 WPF、ASP 或其他。

于 2013-01-09T11:16:31.410 回答
0

你有什么理由使用DataGrid哪个GridView更好,更有能力的控制?

无论如何,要在 DataGrid 中显示 Check Box,您需要使用TemplateColumn。如果您正在使用自动生成列,那么您需要关闭是否关闭,而是手动指定所有列。例如,

<asp:DataGrid id="MyDataGrid" runat="server" AutoGenerateColumns="false" ... >
   <Columns>
       <asp:BoundColumn HeaderText="Name" DataField="Name"/>
       <asp:BoundColumn HeaderText="ISBN" DataField="ISBN"/>
       ...
       <asp:TemplateColumn>
          <ItemTemplate>
             <asp:CheckBox ID="SelectRow" runat="server" 
                Checked='<%# DataBinder.Eval(Container.DataItem, "Select") %>' />
          </ItemTemplate>
   </Columns>
</asp:DataGrid>

数据表代码将保持与您发布的相同 - 复选框的选中属性根据选择列中的值设置。

于 2013-01-09T10:58:56.697 回答