2013-01-09 82 views
0

我需要使用DataSource将DataTable对象填充到DataGrid中。它的完美,我可以做到这一点,但是,我坚持在每行的CheckBox要求。我知道DataGridView提供了DataGridViewCheckBoxColumn,但是,我希望DataGrid也一样。如何在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; 

但我不知道该code.Also的正确性如果一切正常,我不知道如何解决的复选框选中的事件。

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

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

回答

0

是否有任何理由使用DataGrid而不是GridView这肯定是更好,更有能力的conrtrol?

无论如何,要显示DataGrid中的复选框,您需要使用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列中的值进行设置。

+0

我知道这种方法,但我正在开发手持设备的应用程序,它不支持GridView – RTRokzzz

+0

@RTRokzzz,你用ASP.NET标记标记了你的问题,我怀疑这是不正确的。我的答案对ASP.NET代码很有用。 – VinayC

0

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

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

此外,你还没有指定技术为WPF,ASP或其他内。

+0

这是ASP.net,C#手持应用程序(Pocket PC)。它不支持上述功能。所有应该在后端完成。 – RTRokzzz