wpf datagrid checkbox 全选操作遍历选中行

yjjone 2014-10-25 12:58:21
datagrid中,用checkbox 在每行中, 怎么遍历得到 每行数据的 字段值




点击增加缸号按钮 的时候 等到选中行的 的 流程卡号值
...全文
904 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
csjtxy 2014-11-10
  • 打赏
  • 举报
回复
楼上,你写这么清晰,不是害了他么?
E次奥 2014-10-30
  • 打赏
  • 举报
回复
  <DataGrid x:Name="Data" AutoGenerateColumns="False">
            <DataGrid.Columns>
                <DataGridTemplateColumn>
                    <DataGridTemplateColumn.HeaderTemplate>
                        <DataTemplate>
                            <CheckBox x:Name="CheckAll" Click="CheckAll_Click"/>
                        </DataTemplate>
                    </DataGridTemplateColumn.HeaderTemplate>
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <CheckBox IsChecked="{Binding IsSelected,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
                <DataGridTextColumn Binding="{Binding Name}"/>
            </DataGrid.Columns>
        </DataGrid>
     List<AAA> list = new List<AAA>();
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            for (int i = 0; i < 100; i++)
            {
                list.Add(new AAA() { Name = "AAA" + i });
            }
            Data.ItemsSource = list;
        }

        public class AAA : INotifyPropertyChanged
        {
            private bool isSelected = false;

            public bool IsSelected
            {
                get { return isSelected; }
                set { isSelected = value; GetChanged("IsSelected"); }
            }

            private string name;

            public string Name
            {
                get { return name; }
                set { name = value; GetChanged("Name"); }
            }

            public event PropertyChangedEventHandler PropertyChanged;

            private void GetChanged(string Name)
            {
                if (PropertyChanged != null)
                {
                    PropertyChanged(this, new PropertyChangedEventArgs(Name));
                }
            }
        }

        private void CheckAll_Click(object sender, RoutedEventArgs e)
        {
            foreach (var item in list)
            {
                item.IsSelected = !item.IsSelected;
            }

        }
List<AAA> SelectedList = list.Where(a => a.IsSelected).ToList();
wjq 2014-10-29
  • 打赏
  • 举报
回复 1
首先用WPF/Silverlight,必须要有数据绑定的概念,你的数据对象绑定到DataGrid上,有一个属性比如(bool IsSelected)绑定到一个CheckBoxColumn上,而这列作为 选中 这个功能项。那么你最终,只需要去遍历你的数据集合本身就可以知道哪些被选中,而不需要关心UI。避免业务逻辑和UI绑的太紧。以这个功能来说,这是和ASP.NET开发不一样的地方。
yjjone 2014-10-28
  • 打赏
  • 举报
回复
其实 我想要的代码事例 是要 怎么遍历获 选中 的 行的 字段,这个没弄明白
exception92 2014-10-28
  • 打赏
  • 举报
回复
引用 9 楼 yjjone 的回复:
其实 我想要的代码事例 是要 怎么遍历获 选中 的 行的 字段,这个没弄明白
获取选中行的类,不就获取字段了么!!!这有什么逻辑,多学习基础吧
exception92 2014-10-27
  • 打赏
  • 举报
回复
引用 6 楼 yjjone 的回复:
[quote=引用 5 楼 duanzi_peng 的回复:] http://bbs.csdn.net/topics/390912974 绑定的时候 更新它的集合中的IsSelected字段。
菜鸟,可否给个更新代码 [/quote] 例子很多呀, https://social.msdn.microsoft.com/Forums/en-US/b21ca18f-532e-4e31-9e0e-4c042aec9b03/wpf-datagrid-checkbox-?forum=wpfzhchs https://social.msdn.microsoft.com/Forums/vstudio/zh-CN/d1609082-e064-4a6b-aa92-93e21ded5fa2/select-all-checkbox-in-wpf-datagrid?forum=wpf
yjjone 2014-10-27
  • 打赏
  • 举报
回复
引用 5 楼 duanzi_peng 的回复:
http://bbs.csdn.net/topics/390912974 绑定的时候 更新它的集合中的IsSelected字段。
菜鸟,可否给个更新代码
yjjone 2014-10-26
  • 打赏
  • 举报
回复
求帮助
exception92 2014-10-26
  • 打赏
  • 举报
回复
http://bbs.csdn.net/topics/390912974 绑定的时候 更新它的集合中的IsSelected字段。
yjjone 2014-10-26
  • 打赏
  • 举报
回复

   
                    <DataGridTemplateColumn Header="选择">                       
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <CheckBox Checked="CheckBox_Checked" Tag="{Binding Path= Id}" />
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>


这个是XAML 的

 private void CheckBox_Checked(object sender, RoutedEventArgs e)
        {
            CheckBox dg = sender as CheckBox;
            long Id = long.Parse(dg.Tag.ToString());   //获取该行的FID  
            var bl = dg.IsChecked;
            if (bl == true)
            {
                selectRunNO.Add(Id);         //如果选中就保存FID  
            }
            else
            {
                selectRunNO.Remove(Id);  //如果选中取消就删除里面的FID  
            }

        }

全选 的代码该怎么实现呢?
yjjone 2014-10-25
  • 打赏
  • 举报
回复
引用 1 楼 duanzi_peng 的回复:
全选实现了么??你的数据源类型是什么??使用binding机制了么??别让猜问题行不行??
全选能实现,主要是不懂具体的实现代码,没概念 需要前台跟后台的代码- -!
exception92 2014-10-25
  • 打赏
  • 举报
回复
全选实现了么??你的数据源类型是什么??使用binding机制了么??别让猜问题行不行??

8,735

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧