结合使用Datagridview和复选框 [英] Combined use of Datagridview and checkbox

查看:55
本文介绍了结合使用Datagridview和复选框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想设计一个UI,其中,我需要从表中检索值,显示它们,然后从显示的项目中选择一个以上以进行进一步的操作?基本上是单击一些按钮,我需要显示用户名在数据网格中,然后选择 显示的用户中有不止一个可以进行进一步的诉讼.我可以通过某种方式做到这一点吗?

I want to design a UI in which ,I need to retrieve values from a table ,display them and then select more than one from the displayed item for further proceeding?Basically on clicking some button ,I need the username to be displayed in a datagrid and select more than one among the displayed users for further proceedings.Can I do that in some way?

推荐答案

您是否正在使用WPF? WPF没有DataGridView,它是一个Winform控件.我猜您使用的是DataGrid.

Are you using WPF?  WPF have no DataGridView , it is a winform control. I guess you use DataGrid.

>>基本上,单击某些按钮后,我需要将用户名显示在数据网格中,并在显示的用户中选择多个用户以供进一步处理.

>>Basically on clicking some button ,I need the username to be displayed in a datagrid and select more than one among the displayed users for further proceedings.

选择多个项目后您将进行哪些进一步的诉讼程序?

what  further proceedings you will do after select more than one items?

我使用Checkbox制作了一个简单的DataGrid示例.希望它对您有帮助. XAML代码

I made a simple sample of DataGrid with Checkbox. Hope it helps to you. XAML code:

  <StackPanel>
        <ScrollViewer >
            <DataGrid x:Name="dataGrid"  Margin="10" Width="500" Height="300" RowHeaderWidth="0"  ItemsSource="{Binding}" SelectionMode="Extended" CanUserAddRows="False" AutoGenerateColumns="False" ColumnHeaderHeight="30"  >

                <DataGrid.ColumnHeaderStyle>
                    <Style TargetType="DataGridColumnHeader">
                        <Setter Property="Template">
                            <Setter.Value>
                                <ControlTemplate TargetType="DataGridColumnHeader">
                                    <Grid>
                                        <!--<Border x:Name="HeaderBorder" BorderBrush="Black"  BorderThickness="1,0,0,0" Background="Lavender"></Border>-->
                                        <ContentPresenter x:Name="HeaderContent"  RecognizesAccessKey="True" VerticalAlignment="Center" HorizontalAlignment="Center" />
                                        <Thumb x:Name="PART_RightHeaderGripper" HorizontalAlignment="Right"  Width="1" BorderThickness="1" BorderBrush="{Binding VerticalGridLinesBrush, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}}" Cursor="SizeWE"/>
                                    </Grid>
                                </ControlTemplate>
                            </Setter.Value>
                        </Setter>
                    </Style>
                </DataGrid.ColumnHeaderStyle>

                <DataGrid.RowStyle>
                    <Style TargetType="{x:Type DataGridRow}">
                        <Setter Property="Background" Value="LightGray" />
                        <Setter Property="Height" Value="23"/>
                        <Style.Triggers>
                            <Trigger Property="IsMouseOver" Value="True">
                                <Setter Property="Background" Value="#999999"/>
                            </Trigger>
                        </Style.Triggers>
                    </Style>
                </DataGrid.RowStyle>

                <DataGrid.CellStyle>
                    <Style TargetType="DataGridCell">
                        <Setter Property="Template">
                            <Setter.Value>
                                <ControlTemplate TargetType="DataGridCell">
                                    <Grid Background="{TemplateBinding Background}" >
                                        <ContentPresenter  VerticalAlignment="Center" HorizontalAlignment="Center"/>
                                    </Grid>
                                </ControlTemplate>
                            </Setter.Value>
                        </Setter>
                        <Style.Triggers>
                            <Trigger Property="DataGridCell.IsSelected" Value="True">
                                <Setter Property="Foreground" Value="#FDDA1F" />
                                <Setter Property="FontWeight" Value="DemiBold"/>
                                <Setter Property="Background" Value="#9d4d5d" />
                            </Trigger>
                            <DataTrigger Binding="{Binding Path=IsSelected}"  Value="True">
                                <Setter Property="Background" Value="#1d4d5d" />
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </DataGrid.CellStyle>

                <DataGrid.Columns>
                    <DataGridCheckBoxColumn Width="0.5*" Binding="{Binding IsSelected ,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}">
                        <DataGridCheckBoxColumn.Header>
                            <CheckBox Name="chkSelectAll" Checked="chkSelectAll_Checked" Unchecked="chkSelectAll_Unchecked"></CheckBox>
                        </DataGridCheckBoxColumn.Header>
                    </DataGridCheckBoxColumn>
                    <DataGridTextColumn Binding="{Binding ID}" Header="ID" Width="1*"/>
                    <DataGridTextColumn Binding="{Binding FirstName}" Header="First Name" Width="1*"/>
                    <DataGridTextColumn Binding="{Binding LastName}" Header="Last Name" Width="1*"/>
                    <DataGridTextColumn Binding="{Binding Age}" Header="Age" Width="1*"/>
                </DataGrid.Columns>
            </DataGrid>
        </ScrollViewer>
        <Button x:Name="addUser" Width="200" Height="30" Content="Add" Click="addUser_Click"/>
    </StackPanel>

C#代码:

namespace wpfAppDemo.wpfDataGrid
{
    /// <summary>
    /// Interaction logic for sample1.xaml
    /// </summary>
    public partial class sample1 : Window
    {

        ObservableCollection<User> userList = new ObservableCollection<User>() {
            new User() {ID =0, FirstName="Bob",LastName="Ding",Age=27,IsSelected = false },
            new User() {ID =1, FirstName="Wendy",LastName="Zang",Age=24 ,IsSelected = false},
            new User() {ID =2, FirstName="Emily",LastName="Zhang",Age=24,IsSelected = true },
            new User() {ID =3, FirstName="Stanly",LastName="Fan",Age=25 ,IsSelected = false},
            new User() {ID =4, FirstName="Hart",LastName="Wang",Age=27,IsSelected = true },
            new User() {ID =5, FirstName="Amol",LastName="Wang",Age=32,IsSelected = true },
            new User() {ID =6, FirstName="kobe",LastName="Brant",Age=39,IsSelected = false },
        };
        public sample1()
        {
            InitializeComponent();
            this.DataContext = userList;
            dataGrid.ScrollIntoView(userList.Last());
        }
        static int index = 0;
        private void addUser_Click(object sender, RoutedEventArgs e)
        {
            userList.Add(new User { ID = index, FirstName = "first name" + index, LastName = "last name" + index, Age = 39 });
            dataGrid.ScrollIntoView(userList.Last());
            dataGrid.SelectedIndex = dataGrid.Items.Count - 1;
            index++;
        }

        private void chkSelectAll_Checked(object sender, RoutedEventArgs e)
        {
            foreach (User c in dataGrid.ItemsSource)
            {
                c.IsSelected = true;
            }
        }

        private void chkSelectAll_Unchecked(object sender, RoutedEventArgs e)
        {
            foreach (User c in dataGrid.ItemsSource)
            {
                c.IsSelected = false;
            }
        }
    }
    public class User: INotifyPropertyChanged
    {
        public int ID { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public int Age { get; set; }
        private bool _IsSelected = false;

        public event PropertyChangedEventHandler PropertyChanged;

        public bool IsSelected
        {
            get { return _IsSelected; }
            set { _IsSelected = value;  PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("IsSelected")); }
        }
    }
}

最好的问候,

鲍勃


这篇关于结合使用Datagridview和复选框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆