WPF在datagrid中checkbox怎么遍历checkbox获取多选的项的ID?

CheckBox varmapSelect = (CheckBox)this.dgrid.Template.FindName("ckbSelectedAll", dgrid);
多选,全选已经实现,可是我不知道在选好了之后怎么获取多选项的ID,varmapSelect.checked只能获取全选那个键的check值啊

datagrid一旦与数据集合绑定之后,它的每个Row其实就跟每个数据实体绑定了。也就是说datagridrow.dataContext就是一个数据实体。而且wpf的逻辑树机制,使得datagridcell.dataContext及这些个datagridcell里的控件的dataContext也是所在行所绑定的数据实体。
你获取到check过的checkbox,你可以通过(checkbox.dataContext as 数据实体类).ID 获取ID值追问


数据绑定代码如上,求详解= =

追答

我还是给你个例子吧 = =
比如你在前台有两列是酱紫的,

后台遍历IsSelected = true的ID值:
public MainWindow()
{
this.InitializeComponent();
selectedItemId = new List();
}

List selectedItemId;

private void DataGrid_LoadingRow(object sender, DataGridRowEventArgs e)
{
DataGridRow dr = e.Row as DataGridRow;
if (dr != null)
{
var rowDataContext = dr.DataContext as 数据实体类
if (rowDataContext.IsSelected == true)
{
selectedItemId.Add(rowDataContext.ID);
}
}
}

追问

数据实体类是指? 菜鸟不懂= =,还有写在LoadingRow()函数里有用?

追答

public class people
{
public double ID;
public string Name;
}
people就是创建的数据实体类。
写在loadingrow当然有用,只不过这是用在datagrid加载row时有用。也就是说一次性的。

追问

如果我要实现按下一个按钮之后再遍历整个checkbox找出被选中的项的ID,没有DataGridRowEventArgs e,咋办?@_@

追答

这不是还要简单么,连前台控件都不需要获取。直接遍历后台绑定的数据集合实体。看哪些实体的isChecked=true。就把这些个实体对象的ID拿出来。这么简单的逻辑。。。看来楼主要多累积下经验和代码基础。

温馨提示:内容为网友见解,仅供参考
无其他回答

WPF在datagrid中checkbox怎么遍历checkbox获取多选的项的ID?
你获取到check过的checkbox,你可以通过(checkbox.dataContext as 数据实体类).ID 获取ID值

WPF在datagrid中checkbox 怎么通过checkbox的ischecked得到对应的内...
for (int i = 0; i < datagrid.Items.Count; i++){ 中间自己写 }

Wpf Datagrid 设置了模板 checkbox 如何一次选中,单击就选中。默认是...
\/\/当然啦,如果你想使用DataGridCheckBoxColumn的话,你有几个方案,第一:重写元素样式第二:使用触发器第三:写代码 但是我还是觉得使用DataGridTemplateColumn最简单

如何给WPF中的DataGrid的ComBox编辑列添加数据
如果这里解决了您的问题,请您点一下推荐 × WPF项目中现有一个DataGrid,其中有一个名为“姓名”的模板列和名为“工号”的文本列,模板列在编辑时是一个ComBox,要实现的功能:ComBox的选项是从数据查询得到的姓名列表(如人员表中性别为女的人的姓名列表),选择其中的某个姓名,TextBlock显示选择的...

wpf的dataGrid 怎么遍历他的所有单元格,如果包含某个字就改变背景色_百...
遍历操作不建议对datagrid的单元格进行遍历,应当对其数据源进行遍历。如果要针对某单元格的值来做相应处理,建议使用IConverter(转换器)给个例子:前台代码:<DataGrid Name="dg" AutoGenerateColumns="False" RowHeaderWidth="0" SelectionUnit="Cell"> <DataGrid.Resources> <local:ColorConvert x:Key...

WPF的DataGrid中如何获取当前被选定的行的第一个单元格的值?
private void dtList_PreviewMouseDoubleClick(object sender, MouseButtonEventArgs e){ var item = this.dtList.SelectedItem;var id = (DataRowView)this.dtList.SelectedItem;int bh = Convert.ToInt32(id["编号"]);MessageBox.Show(bh.ToString() );} \/\/这样绝对可以取到编号....

在wpf中怎么获取datagrid某行某列的值
现在搞C++了,我都有点不太记得了.这样应该可以: DataRowView selectItem = datagrid.items[索引] as DataRowView 然后通过 selectItem

在wpf中怎么获取datagrid某行某列的值啊?急!跪求!
DataRowView selectItem = datagrid.items[索引] as DataRowView 然后通过 selectItem["列名"] 直接来访问数据.如果你的grid是双向绑定的话你要记住了.你这样来改变某行某列,你的数据源也是会跟着改变的.我不记得的是个别属性的拼写是不是这样.但是访问肯定是这样的.通过行视图来访问和修改 ...

WPF的DataGrid中如何获取当前被选定的行的值?
dataGrid1.SelectedItem 是你dataGrid选中的行所代表的数据实体对象 可以用以下方式获取和设置该对象的属性 (dataGrid1.SelectedItem as 实体对象).属性 不太明白你指的textbox是什么。默认表格中的数据都是在前台可以修改的。如果前台修改想改变绑定的数据源,那么只要设置双向绑定就行了。

WPF DataGridCheckBoxColumn 为什么每次都要点两下才能勾选checkbox...
<CheckBox Name="cbStatus" IsChecked="{Binding IsCheck}" Tag="{Binding ID}" Click="cbStatus_Click" \/> <\/DataTemplate> <\/DataGridTemplateColumn.CellTemplate> <\/DataGridTemplateColumn> <DataGridTextColumn Header="ID" Width="170" Binding="{Binding ID}" \/> <DataGridTextColumn ...

相似回答