2013-01-09 119 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