如何在DataGrid复选框中处理已检查的事件

时间:2013-01-09 10:23:18

标签: c# asp.net pocketpc handheld

我需要使用DataTable对象填充DataGrid作为DataSource。它很完美,我可以做到这一点但是,我坚持每行中的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;

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

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

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

2 个答案:

答案 0 :(得分: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>

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

答案 1 :(得分: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或其他。