WPF界面解決方案首選工具DevExpress WPF使用教程:如何使用DXGrid和eXpress持久對象實現(xiàn)CRUD操作
下載DevExpress v20.1完整版 DevExpress v20.1漢化資源獲取
通過DevExpress WPF Controls,您能創(chuàng)建有著強大互動功能的XAML基礎(chǔ)應(yīng)用程序,這些應(yīng)用程序?qū)W⒂诋?dāng)代客戶的需求和構(gòu)建未來新一代支持觸摸的解決方案。
本文將介紹如何將XPInstantFeedbackSource或XPServerCollectionSource與DXGrid一起使用,以及如何通過特殊行為在應(yīng)用程序中實現(xiàn)CRUD操作(例如,添加、刪除、編輯)。
系統(tǒng)背景
- 平臺:WPF
- 產(chǎn)品:DXGrid for WPF
測試示例需要在計算機上安裝SQL Express服務(wù)和MSAccess。
我們已經(jīng)為GridControl創(chuàng)建了XPOServerModeCRUDBehavior和XPOInstantModeCRUDBehavior附加操作,例如:
<dxg:GridControl><br> <i:Interaction.Behaviors><br> <crud:XPOServerModeCRUDBehavior .../><br> </i:Interaction.Behaviors><br> </dxg:GridControl>
XPServerModeCRUDBehavior和XPInstantModeCRUDBehavior類包含NewRowForm和EditRowForm屬性,以提供"Add Row"和 "Edit Row"操作。使用這些屬性,可以根據(jù)需要創(chuàng)建添加和編輯表單:
<DataTemplate x:Key="EditRecordTemplate"><br> <StackPanel Margin="8" MinWidth="200"><br> <Grid><br> <Grid.ColumnDefinitions><br> <ColumnDefinition/><br> <ColumnDefinition/><br> </Grid.ColumnDefinitions><br> <Grid.RowDefinitions><br> <RowDefinition/><br> <RowDefinition/><br> </Grid.RowDefinitions><br> <TextBlock Text="ID:" VerticalAlignment="Center" Grid.Row="0" Grid.Column="0" Margin="0,0,6,4" /><br> <dxe:TextEdit x:Name="txtID" Grid.Row="0" Grid.Column="1" EditValue="{Binding Path=Id, Mode=TwoWay}" Margin="0,0,0,4" /><br> <TextBlock Text="Name:" VerticalAlignment="Center" Grid.Row="1" Grid.Column="0" Margin="0,0,6,4" /><br> <dxe:TextEdit x:Name="txtCompany" Grid.Row="1" Grid.Column="1" EditValue="{Binding Path=Name, Mode=TwoWay}" Margin="0,0,0,4" /><br> </Grid><br> </StackPanel><br> </DataTemplate><br> <crud:XPServerModeCRUDBehavior NewRowForm="{StaticResource ResourceKey=EditRecordTemplate}" EditRowForm="{StaticResource ResourceKey=EditRecordTemplate}"/> <br>
此操作類需要您的數(shù)據(jù)模型中的以下信息:
- XPObjectType:行的類型;
- DataServiceContext:數(shù)據(jù)庫實體;
- PrimaryKey:數(shù)據(jù)庫表的主鍵;
- CollectionSource/InstantCollectionSource:EntityServerModeDataSource類型的對象。
<dxg:GridControl><br> <i:Interaction.Behaviors><br> <crud:XPOServerModeCRUDBehavior XPObjectType="{x:Type local:Items}" CollectionSource="{Binding Collection}" PrimaryKey="Id"/><br> </i:Interaction.Behaviors><br> </dxg:GridControl><br>
用于SL的XPInstantModeCRUDBehavior類包含ServiceHelper屬性,該屬性引用提供用于處理數(shù)據(jù)庫的操作的對象
helper.ServiceHelper = new ServiceHelper(helper, new Uri("<a href='http://localhost'>http://localhost</a>:54177/WcfDataService.svc/"));<br>;
操作類的后代支持以下命令:NewRowCommand、RemoveRowCommand、EditRowCommand,您可以輕松地將交互控件與這些命令綁定在一起。 例如:
<crud:XPOServerModeCRUDBehavior x:Name="helper"/><br> <StackPanel Grid.Row="1" Orientation="Horizontal" HorizontalAlignment="Center"><br> <Button Height="22" Width="60" Command="{Binding Path=NewRowCommand, ElementName=helper}">Add</Button><br> <Button Height="22" Width="60" Command="{Binding Path=RemoveRowCommand, ElementName=helper}" Margin="6,0,6,0">Remove</Button><br> <Button Height="22" Width="60" Command="{Binding Path=EditRowCommand, ElementName=helper}">Edit</Button><br> </StackPanel><br> <br>
默認(rèn)情況下,XPOServerModeCRUDBehavior和XPOInstantModeCRUDBehavior解決方案支持以下最終用戶交互功能:
- 最終用戶可以通過雙擊網(wǎng)格行或在AllowKeyDownActions屬性為True的情況下按Enter鍵來編輯選定的行值。
- 如果AllowKeyDownActions屬性為True,則最終用戶可以通過Delete鍵刪除選定的行。
- 最終用戶可以通過NewRowCommand、RemoveRowCommand和EditRowCommand命令添加,刪除和編輯新行。
DevExpress技術(shù)交流群2:775869749 歡迎一起進群討論