0

我已经实现GRIDCONTROL了,其中我添加了一个TABLEVIEW包含 Columns say的内容NAME, AGE, SALARY。我正在从数据库中获取数据并相应地填充列。现在我想为Checkbox每一行添加一个,这样如果我可以一次选择两行并获取相应的数据。如何实现复选框?

我正在使用 DEVEXPRESS 控件

<GridControl Name="gridControl1">
    <GridControl.View>
        <TableView x:Name="view" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"  />
    </GridControl.View>
    <GridControl.Columns>
        <GridColumn FieldName="Name"  Name="Name"  Width="120" Header="Name"/>
        <GridColumn FieldName="Age"  Name="Age"  Width="120" Header="Age"/>                
        <GridColumn FieldName="Salary"  Name="Salary"  Width="120" Header="Salary" />                
    <GridControl.Columns>
<GridControl>

现在我想为该行的每个条目添加复选框,这样如果选中该复选框,我就可以获取与该行对应的所有数据。

4

1 回答 1

0

我将这种方法用于类似的应用程序。一个单独的列用于选择一个人。该列的标题中还有一个复选框,可以选择/取消选择所有人。

视图模型

private ObservableCollection<PersonModel> _peopleCollection;
public ObservableCollection<PersonModel> PeopleCollection
{
        get { return _peopleCollection; }
        set
        {
            _peopleCollection = value;
            RaisePropertyChanged("PeopleCollection");
        }
    }

private void initPeople()
    {
        foreach (var person in PeopleCollection)
        {             
            person.PropertyChanged += PersonOnPropertyChanged;
       }
    }

private void PersonOnPropertyChanged(object sender, PropertyChangedEventArgs propertyChangedEventArgs)
    {
        if(propertyChangedEventArgs.PropertyName == "IsPersonSelected")
        {
    //Handle checked/unchecked person

        }
    }


private bool _allPersonsSelected
    public bool AllPersonsSelected
    {
        get { return _allPersonsSelected; }
        set
        {
            _allPersonsSelected= value;
            RaisePropertyChanged("AllPersonsSelected");

            if (value)
                SelectRows();
            else
            {
                DeselectRows();
            }
        }
    }

    public void SelectRows()
    {
        foreach (var record in PeopleCollection)
            record.IsPersonSelected = true;
    }

    public void DeselectRows()
    {
        foreach (var record in PeopleCollection)
            record.IsPersonSelected = false;
    }

}

这是视图中的网格 xaml

<dxg:GridControl ItemsSource="{Binding Path=PeopleCollection}">
            <dxg:GridControl.View>
                <dxg:TableView>
                </dxg:TableView>
            </dxg:GridControl.View>
            <dxg:GridControl.Columns>
                <dxg:GridColumn FieldName="IsPersonSelected"
                                HorizontalHeaderContentAlignment="Left">
                    <dxg:GridColumn.Header>
                        <StackPanel Orientation="Horizontal">
                            <TextBlock>Selected</TextBlock>
                            <dxe:CheckEdit EditValue="{Binding Path=AllPersonsSelected}"
                                           Margin="10,0,0,0" />
                        </StackPanel>
                    </dxg:GridColumn.Header>
                </dxg:GridColumn>
                <dxg:GridColumn FieldName="Name" Header="Name"/>
                <dxg:GridColumn FieldName="Age" Header="Age"/>
            </dxg:GridControl.Columns>
        </dxg:GridControl>
于 2013-07-01T09:42:54.853 回答