0

DataGrid に DataTable オブジェクトを 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;

しかし、私はこのコードの正確さについて確信が持てません.また、それが機能する場合、私は知りません.

DataGrid (DataGridView ではない) の正しい解決策をお勧めします。

特定のリストでデータテーブルを埋める場合。各列に CheckBox を動的に追加するにはどうすればよいですか?

4

2 に答える 2

0

確かに優れた、より有能なコントロールをDataGrid代わりに使用する理由はありますか?GridView

とにかく、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>

データテーブルのコードは、投稿したものと同じままです-チェックボックスのチェック済みプロパティは、選択列の値に従って設定されます。

于 2013-01-09T10:58:56.697 に答える
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 に答える