C# 如何使用C读取WPF DataGrid(从数据上下文绑定源)中选中的行单元格值#
这里是wpfwin.xaml中的数据网格。我想收集列表中的“Challan_No”值,但我不能这样做。请帮助我C# 如何使用C读取WPF DataGrid(从数据上下文绑定源)中选中的行单元格值#,c#,wpf,checkbox,datagrid,C#,Wpf,Checkbox,Datagrid,这里是wpfwin.xaml中的数据网格。我想收集列表中的“Challan_No”值,但我不能这样做。请帮助我 <DataGridTextColumn Header="Chalaan ID" Width="Auto" Binding="{Binding Id, Mode=OneWay}"/> <DataGridTextColumn Header="Challan No" Width="Auto" Binding="{Bindi
<DataGridTextColumn Header="Chalaan ID" Width="Auto" Binding="{Binding Id, Mode=OneWay}"/>
<DataGridTextColumn Header="Challan No" Width="Auto" Binding="{Binding Challan_No, Mode=OneWay}" IsReadOnly="True"/>
<DataGridTextColumn Header="Company" Width="Auto" Binding="{Binding Organization_Name, Mode=OneWay}"/>
<DataGridTextColumn Header="Client" Width="Auto" Binding="{Binding Organization, Mode=OneWay}"/>
<DataGridTextColumn Header="Date" Width="Auto" Binding="{Binding Date, Mode=OneWay}"/>
<DataGridTemplateColumn Header="select" Width="100" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox x:Name="ckselect" ></CheckBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
<DataGridTextColumn Header="Chalaan ID" Width="Auto" Binding="{Binding Id, Mode=OneWay}"/>
<DataGridTextColumn Header="Challan No" Width="Auto" Binding="{Binding Challan_No, Mode=OneWay}" IsReadOnly="True"/>
<DataGridTextColumn Header="Company" Width="Auto" Binding="{Binding Organization_Name, Mode=OneWay}"/>
<DataGridTextColumn Header="Client" Width="Auto" Binding="{Binding Organization, Mode=OneWay}"/>
<DataGridTextColumn Header="Date" Width="Auto" Binding="{Binding Date, Mode=OneWay}"/>
<DataGridTemplateColumn Header="select" Width="100" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox x:Name="ckselect" ></CheckBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
在这里,我尝试了一些代码将其放入.cs页面
<DataGridTextColumn Header="Chalaan ID" Width="Auto" Binding="{Binding Id, Mode=OneWay}"/>
<DataGridTextColumn Header="Challan No" Width="Auto" Binding="{Binding Challan_No, Mode=OneWay}" IsReadOnly="True"/>
<DataGridTextColumn Header="Company" Width="Auto" Binding="{Binding Organization_Name, Mode=OneWay}"/>
<DataGridTextColumn Header="Client" Width="Auto" Binding="{Binding Organization, Mode=OneWay}"/>
<DataGridTextColumn Header="Date" Width="Auto" Binding="{Binding Date, Mode=OneWay}"/>
<DataGridTemplateColumn Header="select" Width="100" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox x:Name="ckselect" ></CheckBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
ArrayList list = new ArrayList();
for (int i = 0; i < myGrid.Items.Count; i++)
{
CheckBox mycheckbox = myGrid.Columns[5].GetCellContent(myGrid.Items[i]) as CheckBox;
if (mycheckbox.IsChecked == true)
{
int inde = this.myGrid.SelectedIndex;
DataRowView drv = (DataRowView)myGrid.Items[inde];
object ch = drv[1];
list.Add(ch);
}
}
ArrayList list=new ArrayList();
对于(int i=0;i
首先,您可以简单地使用DataGridCheckBoxColumn
而不是在DataGridTemplateColumn
中添加复选框
:
<DataGridTextColumn Header="Chalaan ID" Width="Auto" Binding="{Binding Id, Mode=OneWay}"/>
<DataGridTextColumn Header="Challan No" Width="Auto" Binding="{Binding Challan_No, Mode=OneWay}" IsReadOnly="True"/>
<DataGridTextColumn Header="Company" Width="Auto" Binding="{Binding Organization_Name, Mode=OneWay}"/>
<DataGridTextColumn Header="Client" Width="Auto" Binding="{Binding Organization, Mode=OneWay}"/>
<DataGridTextColumn Header="Date" Width="Auto" Binding="{Binding Date, Mode=OneWay}"/>
<DataGridTemplateColumn Header="select" Width="100" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox x:Name="ckselect" ></CheckBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
<DataGridTextColumn Header="Chalaan ID" Width="Auto" Binding="{Binding Id, Mode=OneWay}"/>
<DataGridTextColumn Header="Challan No" Width="Auto" Binding="{Binding Challan_No, Mode=OneWay}" IsReadOnly="True"/>
<DataGridTextColumn Header="Company" Width="Auto" Binding="{Binding Organization_Name, Mode=OneWay}"/>
<DataGridTextColumn Header="Client" Width="Auto" Binding="{Binding Organization, Mode=OneWay}"/>
<DataGridTextColumn Header="Date" Width="Auto" Binding="{Binding Date, Mode=OneWay}"/>
<DataGridCheckBoxColumn Header="select" Width="100" />
</DataGrid.Columns>
</DataGrid>
要获取选中项目的列表,请执行以下操作:
<DataGridTextColumn Header="Chalaan ID" Width="Auto" Binding="{Binding Id, Mode=OneWay}"/>
<DataGridTextColumn Header="Challan No" Width="Auto" Binding="{Binding Challan_No, Mode=OneWay}" IsReadOnly="True"/>
<DataGridTextColumn Header="Company" Width="Auto" Binding="{Binding Organization_Name, Mode=OneWay}"/>
<DataGridTextColumn Header="Client" Width="Auto" Binding="{Binding Organization, Mode=OneWay}"/>
<DataGridTextColumn Header="Date" Width="Auto" Binding="{Binding Date, Mode=OneWay}"/>
<DataGridTemplateColumn Header="select" Width="100" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox x:Name="ckselect" ></CheckBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
var SelectedList=new List<YourDataGridItemType>();
for (int i = 0; i < MyDataGrid.Items.Count; i++)
{
var item = MyDataGrid.Items[i];
var mycheckbox = MyDataGrid.Columns[1].GetCellContent(item) as CheckBox;
if ((bool)mycheckbox.IsChecked)
{
SelectedList.Add(YourDataGridItemsList[i]);
}
}
var SelectedList=newlist();
对于(int i=0;i
其中,DataGridItems列表表示DataGrid绑定到的对象列表。首先,您可以简单地使用
DataGridCheckBoxColumn
,而不是在DataGridTemplateColumn
中添加复选框
:
<DataGridTextColumn Header="Chalaan ID" Width="Auto" Binding="{Binding Id, Mode=OneWay}"/>
<DataGridTextColumn Header="Challan No" Width="Auto" Binding="{Binding Challan_No, Mode=OneWay}" IsReadOnly="True"/>
<DataGridTextColumn Header="Company" Width="Auto" Binding="{Binding Organization_Name, Mode=OneWay}"/>
<DataGridTextColumn Header="Client" Width="Auto" Binding="{Binding Organization, Mode=OneWay}"/>
<DataGridTextColumn Header="Date" Width="Auto" Binding="{Binding Date, Mode=OneWay}"/>
<DataGridTemplateColumn Header="select" Width="100" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox x:Name="ckselect" ></CheckBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
<DataGridTextColumn Header="Chalaan ID" Width="Auto" Binding="{Binding Id, Mode=OneWay}"/>
<DataGridTextColumn Header="Challan No" Width="Auto" Binding="{Binding Challan_No, Mode=OneWay}" IsReadOnly="True"/>
<DataGridTextColumn Header="Company" Width="Auto" Binding="{Binding Organization_Name, Mode=OneWay}"/>
<DataGridTextColumn Header="Client" Width="Auto" Binding="{Binding Organization, Mode=OneWay}"/>
<DataGridTextColumn Header="Date" Width="Auto" Binding="{Binding Date, Mode=OneWay}"/>
<DataGridCheckBoxColumn Header="select" Width="100" />
</DataGrid.Columns>
</DataGrid>
要获取选中项目的列表,请执行以下操作:
<DataGridTextColumn Header="Chalaan ID" Width="Auto" Binding="{Binding Id, Mode=OneWay}"/>
<DataGridTextColumn Header="Challan No" Width="Auto" Binding="{Binding Challan_No, Mode=OneWay}" IsReadOnly="True"/>
<DataGridTextColumn Header="Company" Width="Auto" Binding="{Binding Organization_Name, Mode=OneWay}"/>
<DataGridTextColumn Header="Client" Width="Auto" Binding="{Binding Organization, Mode=OneWay}"/>
<DataGridTextColumn Header="Date" Width="Auto" Binding="{Binding Date, Mode=OneWay}"/>
<DataGridTemplateColumn Header="select" Width="100" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox x:Name="ckselect" ></CheckBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
var SelectedList=new List<YourDataGridItemType>();
for (int i = 0; i < MyDataGrid.Items.Count; i++)
{
var item = MyDataGrid.Items[i];
var mycheckbox = MyDataGrid.Columns[1].GetCellContent(item) as CheckBox;
if ((bool)mycheckbox.IsChecked)
{
SelectedList.Add(YourDataGridItemsList[i]);
}
}
var SelectedList=newlist();
对于(int i=0;i
其中,DataGridItems列表表示DataGrid绑定到的对象列表。首先,您可以简单地使用
DataGridCheckBoxColumn
,而不是在DataGridTemplateColumn
中添加复选框
:
<DataGridTextColumn Header="Chalaan ID" Width="Auto" Binding="{Binding Id, Mode=OneWay}"/>
<DataGridTextColumn Header="Challan No" Width="Auto" Binding="{Binding Challan_No, Mode=OneWay}" IsReadOnly="True"/>
<DataGridTextColumn Header="Company" Width="Auto" Binding="{Binding Organization_Name, Mode=OneWay}"/>
<DataGridTextColumn Header="Client" Width="Auto" Binding="{Binding Organization, Mode=OneWay}"/>
<DataGridTextColumn Header="Date" Width="Auto" Binding="{Binding Date, Mode=OneWay}"/>
<DataGridTemplateColumn Header="select" Width="100" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox x:Name="ckselect" ></CheckBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
<DataGridTextColumn Header="Chalaan ID" Width="Auto" Binding="{Binding Id, Mode=OneWay}"/>
<DataGridTextColumn Header="Challan No" Width="Auto" Binding="{Binding Challan_No, Mode=OneWay}" IsReadOnly="True"/>
<DataGridTextColumn Header="Company" Width="Auto" Binding="{Binding Organization_Name, Mode=OneWay}"/>
<DataGridTextColumn Header="Client" Width="Auto" Binding="{Binding Organization, Mode=OneWay}"/>
<DataGridTextColumn Header="Date" Width="Auto" Binding="{Binding Date, Mode=OneWay}"/>
<DataGridCheckBoxColumn Header="select" Width="100" />
</DataGrid.Columns>
</DataGrid>
要获取选中项目的列表,请执行以下操作:
<DataGridTextColumn Header="Chalaan ID" Width="Auto" Binding="{Binding Id, Mode=OneWay}"/>
<DataGridTextColumn Header="Challan No" Width="Auto" Binding="{Binding Challan_No, Mode=OneWay}" IsReadOnly="True"/>
<DataGridTextColumn Header="Company" Width="Auto" Binding="{Binding Organization_Name, Mode=OneWay}"/>
<DataGridTextColumn Header="Client" Width="Auto" Binding="{Binding Organization, Mode=OneWay}"/>
<DataGridTextColumn Header="Date" Width="Auto" Binding="{Binding Date, Mode=OneWay}"/>
<DataGridTemplateColumn Header="select" Width="100" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox x:Name="ckselect" ></CheckBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
var SelectedList=new List<YourDataGridItemType>();
for (int i = 0; i < MyDataGrid.Items.Count; i++)
{
var item = MyDataGrid.Items[i];
var mycheckbox = MyDataGrid.Columns[1].GetCellContent(item) as CheckBox;
if ((bool)mycheckbox.IsChecked)
{
SelectedList.Add(YourDataGridItemsList[i]);
}
}
var SelectedList=newlist();
对于(int i=0;i
其中,DataGridItems列表表示DataGrid绑定到的对象列表。首先,您可以简单地使用
DataGridCheckBoxColumn
,而不是在DataGridTemplateColumn
中添加复选框
:
<DataGridTextColumn Header="Chalaan ID" Width="Auto" Binding="{Binding Id, Mode=OneWay}"/>
<DataGridTextColumn Header="Challan No" Width="Auto" Binding="{Binding Challan_No, Mode=OneWay}" IsReadOnly="True"/>
<DataGridTextColumn Header="Company" Width="Auto" Binding="{Binding Organization_Name, Mode=OneWay}"/>
<DataGridTextColumn Header="Client" Width="Auto" Binding="{Binding Organization, Mode=OneWay}"/>
<DataGridTextColumn Header="Date" Width="Auto" Binding="{Binding Date, Mode=OneWay}"/>
<DataGridTemplateColumn Header="select" Width="100" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox x:Name="ckselect" ></CheckBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
<DataGridTextColumn Header="Chalaan ID" Width="Auto" Binding="{Binding Id, Mode=OneWay}"/>
<DataGridTextColumn Header="Challan No" Width="Auto" Binding="{Binding Challan_No, Mode=OneWay}" IsReadOnly="True"/>
<DataGridTextColumn Header="Company" Width="Auto" Binding="{Binding Organization_Name, Mode=OneWay}"/>
<DataGridTextColumn Header="Client" Width="Auto" Binding="{Binding Organization, Mode=OneWay}"/>
<DataGridTextColumn Header="Date" Width="Auto" Binding="{Binding Date, Mode=OneWay}"/>
<DataGridCheckBoxColumn Header="select" Width="100" />
</DataGrid.Columns>
</DataGrid>
要获取选中项目的列表,请执行以下操作:
<DataGridTextColumn Header="Chalaan ID" Width="Auto" Binding="{Binding Id, Mode=OneWay}"/>
<DataGridTextColumn Header="Challan No" Width="Auto" Binding="{Binding Challan_No, Mode=OneWay}" IsReadOnly="True"/>
<DataGridTextColumn Header="Company" Width="Auto" Binding="{Binding Organization_Name, Mode=OneWay}"/>
<DataGridTextColumn Header="Client" Width="Auto" Binding="{Binding Organization, Mode=OneWay}"/>
<DataGridTextColumn Header="Date" Width="Auto" Binding="{Binding Date, Mode=OneWay}"/>
<DataGridTemplateColumn Header="select" Width="100" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox x:Name="ckselect" ></CheckBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
var SelectedList=new List<YourDataGridItemType>();
for (int i = 0; i < MyDataGrid.Items.Count; i++)
{
var item = MyDataGrid.Items[i];
var mycheckbox = MyDataGrid.Columns[1].GetCellContent(item) as CheckBox;
if ((bool)mycheckbox.IsChecked)
{
SelectedList.Add(YourDataGridItemsList[i]);
}
}
var SelectedList=newlist();
对于(int i=0;i
其中,您的DataGridItems列表表示您的DataGrid绑定到的对象列表。我认为最好是将IsSelected属性添加到显示的任何类型,然后将该属性双向绑定到复选框列。这样,您只需执行以下操作即可获得选定的元素:
<DataGridTextColumn Header="Chalaan ID" Width="Auto" Binding="{Binding Id, Mode=OneWay}"/>
<DataGridTextColumn Header="Challan No" Width="Auto" Binding="{Binding Challan_No, Mode=OneWay}" IsReadOnly="True"/>
<DataGridTextColumn Header="Company" Width="Auto" Binding="{Binding Organization_Name, Mode=OneWay}"/>
<DataGridTextColumn Header="Client" Width="Auto" Binding="{Binding Organization, Mode=OneWay}"/>
<DataGridTextColumn Header="Date" Width="Auto" Binding="{Binding Date, Mode=OneWay}"/>
<DataGridTemplateColumn Header="select" Width="100" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox x:Name="ckselect" ></CheckBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
mycollection.Where(x=>x.IsSelected);
我认为最好是将IsSelected属性添加到显示的任何类型,然后将该属性双向绑定到checkbox列。这样,您只需执行以下操作即可获得选定的元素:
<DataGridTextColumn Header="Chalaan ID" Width="Auto" Binding="{Binding Id, Mode=OneWay}"/>
<DataGridTextColumn Header="Challan No" Width="Auto" Binding="{Binding Challan_No, Mode=OneWay}" IsReadOnly="True"/>
<DataGridTextColumn Header="Company" Width="Auto" Binding="{Binding Organization_Name, Mode=OneWay}"/>
<DataGridTextColumn Header="Client" Width="Auto" Binding="{Binding Organization, Mode=OneWay}"/>
<DataGridTextColumn Header="Date" Width="Auto" Binding="{Binding Date, Mode=OneWay}"/>
<DataGridTemplateColumn Header="select" Width="100" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox x:Name="ckselect" ></CheckBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
mycollection.Where(x=>x.IsSelected);
我认为最好是将IsSelected属性添加到显示的任何类型,然后将该属性双向绑定到checkbox列。这样,您只需执行以下操作即可获得选定的元素:
<DataGridTextColumn Header="Chalaan ID" Width="Auto" Binding="{Binding Id, Mode=OneWay}"/>
<DataGridTextColumn Header="Challan No" Width="Auto" Binding="{Binding Challan_No, Mode=OneWay}" IsReadOnly="True"/>
<DataGridTextColumn Header="Company" Width="Auto" Binding="{Binding Organization_Name, Mode=OneWay}"/>
<DataGridTextColumn Header="Client" Width="Auto" Binding="{Binding Organization, Mode=OneWay}"/>
<DataGridTextColumn Header="Date" Width="Auto" Binding="{Binding Date, Mode=OneWay}"/>
<DataGridTemplateColumn Header="select" Width="100" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox x:Name="ckselect" ></CheckBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
mycollection.Where(x=>x.IsSelected);
我认为最好是将IsSelected属性添加到显示的任何类型,然后将该属性双向绑定到checkbox列。这样,您只需执行以下操作即可获得选定的元素:
<DataGridTextColumn Header="Chalaan ID" Width="Auto" Binding="{Binding Id, Mode=OneWay}"/>
<DataGridTextColumn Header="Challan No" Width="Auto" Binding="{Binding Challan_No, Mode=OneWay}" IsReadOnly="True"/>
<DataGridTextColumn Header="Company" Width="Auto" Binding="{Binding Organization_Name, Mode=OneWay}"/>
<DataGridTextColumn Header="Client" Width="Auto" Binding="{Binding Organization, Mode=OneWay}"/>
<DataGridTextColumn Header="Date" Width="Auto" Binding="{Binding Date, Mode=OneWay}"/>
<DataGridTemplateColumn Header="select" Width="100" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox x:Name="ckselect" ></CheckBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
mycollection.Where(x=>x.IsSelected);
如何启用复选框以选中您的意思是要使DataGridCheckBoxColumn的默认值被选中为真吗?我在我的页面中实现了您的代码,但无法选中它们。您能告诉我您是如何定义DataGrid(Xaml)的吗?Joseph先生,复选框未与数据库(列)绑定,它用于选择与数据库绑定的行DataGrid行。我的代码实现与给定的解决方案相同…如何启用复选框以选中您的意思是使DataGridCheckBoxColumn成为默认值