翻譯|使用教程|編輯:龔雪|2025-02-12 10:25:53.123|閱讀 102 次
概述:本文主要介紹DevExpress WPF Grid控件的未綁定列,歡迎下載最新版組件體驗(yàn)!
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
DevExpress WPF擁有120+個控件和庫,將幫助您交付滿足甚至超出企業(yè)需求的高性能業(yè)務(wù)應(yīng)用程序。通過DevExpress WPF能創(chuàng)建有著強(qiáng)大互動功能的XAML基礎(chǔ)應(yīng)用程序,這些應(yīng)用程序?qū)W⒂诋?dāng)代客戶的需求和構(gòu)建未來新一代支持觸摸的解決方案。 無論是Office辦公軟件的衍伸產(chǎn)品,還是以數(shù)據(jù)為中心的商業(yè)智能產(chǎn)品,都能通過DevExpress WPF控件來實(shí)現(xiàn)。
未綁定列未綁定到數(shù)據(jù)源中的字段,這些列允許您根據(jù)綁定列中的值計算值,或顯示來自自定義數(shù)據(jù)源的數(shù)據(jù)。
DevExpress WPF GridControl中綁定列和未綁定列的功能是相同的,您可以按照與綁定列相同的方式對未綁定列進(jìn)行排序、分組、顯示摘要和篩選。
DevExpress技術(shù)交流群11:749942875 歡迎一起進(jìn)群討論
1. 向集合添加一個GridColumn對象。
2. 將UnboundDataType屬性設(shè)置為列應(yīng)存儲的值的類型,GridControl根據(jù)該屬性值選擇列的默認(rèn)編輯器。要替換編輯器,請使用屬性。
3. 為屬性分配一個唯一的字段名,字段名不能與另一列的字段名或數(shù)據(jù)源字段名相匹配。
4. 使用以下技術(shù)當(dāng)中的一個向未綁定列填充數(shù)據(jù):
XAML
<Window ... xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid" xmlns:sys="clr-namespace:System;assembly=mscorlib"> <dxg:GridControl x:Name="grid"> <!-- ... --> <dxg:GridColumn FieldName="Total" UnboundDataType="{x:Type sys:Decimal}" UnboundExpression="[Quantity] * [UnitPrice]"/> </dxg:GridControl>
C#
grid.Columns.Add(new DevExpress.Xpf.Grid.GridColumn() { FieldName = "Total", UnboundDataType = typeof(decimal), UnboundExpression = "[Quantity] * [UnitPrice]" });
VB.NET
grid.Columns.Add(New DevExpress.Xpf.Grid.GridColumn() With { .FieldName = "Total", .UnboundDataType = GetType(Decimal), .UnboundExpression = "[Quantity] * [UnitPrice]" })
您也可以使用/屬性來維護(hù)一個干凈的MVVM模式,并在ViewModel中填充未綁定的列。
XAML
<dxg:GridControl ItemsSource="{Binding Items}" CustomUnboundColumnDataCommand="{Binding UnboundColumnDataCommand}"> <!-- ... --> <dxg:GridColumn FieldName="Total" UnboundDataType="{x:Type sys:Decimal}"/> </dxg:GridControl>
C#
[Command] public void UnboundColumnData(UnboundColumnRowArgs args) { if(args.IsGetData) { var item = (Product)args.Item; args.Value = item.UnitPrice * item.Quantity; } }
VB.NET
<Command> Public Sub UnboundColumnData(ByVal args As UnboundColumnRowArgs) If args.IsGetData Then Dim item = CType(args.Item, Product) args.Value = item.UnitPrice * item.Quantity End If End Sub
在大多數(shù)情況下,未綁定列的數(shù)據(jù)是從自定義數(shù)據(jù)源獲取的,或者根據(jù)綁定列的值計算。
如果從自定義數(shù)據(jù)源檢索未綁定數(shù)據(jù),則可以對其進(jìn)行編輯。在用戶更改了未綁定列的值之后,應(yīng)該將該值保存回網(wǎng)格的數(shù)據(jù)源。要為未綁定列提供數(shù)據(jù)并將任何更改保存到自定義數(shù)據(jù)源,請?zhí)幚?事件。請注意,此事件僅針對未綁定的列引發(fā)。
事件參數(shù)的屬性返回true,將為每個數(shù)據(jù)行引發(fā)事件,從而允許指定未綁定列的值。網(wǎng)格數(shù)據(jù)源中被處理的行索引由屬性返回,應(yīng)該給屬性分配一個值。
事件參數(shù)的屬性返回true,屬性包含應(yīng)該保存到自定義數(shù)據(jù)源的修改后的單元格值。
下面的代碼示例使用Dictionary創(chuàng)建一個可編輯的未綁定列:
XAML
<dxg:GridControl Name="grid" AutoGenerateColumns="AddNew" EnableSmartColumnsGeneration="True" ItemsSource="{Binding List}" CustomUnboundColumnData="grid_CustomUnboundColumnData"> <dxg:GridControl.Columns> <dxg:GridColumn FieldName="MyUnboundColumn" UnboundDataType="{x:Type sys:String}"/> <!-- ... --> </dxg:GridControl.Columns> </dxg:GridControl>
C#
Dictionary<int, string> unboundData = new Dictionary<int, string>(); unboundData[0] = "MyText"; //... private void grid_CustomUnboundColumnData(object sender, GridColumnDataEventArgs e) { if (e.Column.FieldName == "MyUnboundColumn") { // Populate columns if (e.IsGetData) { if (unboundData.ContainsKey(e.ListSourceRowIndex)) e.Value = unboundData[e.ListSourceRowIndex]; } // Post edited values to the underlying data source if (e.IsSetData && e.Value != null) { unboundData[e.ListSourceRowIndex] = e.Value.ToString(); } } }
VB.NET
Dictionary<int, string> unboundData = new Dictionary<int, string>(); unboundData[0] = "MyText"; ' ... Private Sub grid_CustomUnboundColumnData(ByVal sender As Object, ByVal e As GridColumnDataEventArgs) If e.Column.FieldName = "MyUnboundColumn" Then ' Populate columns If e.IsGetData Then If unboundData.ContainsKey(e.ListSourceRowIndex) Then e.Value = unboundData(e.ListSourceRowIndex) End If ' Post edited values to the underlying data source If e.IsSetData AndAlso e.Value IsNot Nothing Then unboundData(e.ListSourceRowIndex) = e.Value.ToString() End If End If End Sub
慧都科技為國內(nèi)眾多知名企業(yè)提供一站式的DevExpress產(chǎn)品中文服務(wù),負(fù)責(zé)DevExpress控件產(chǎn)品中國區(qū)的銷售、試用、技術(shù)支持,賦能航空航天、金融、醫(yī)療等行業(yè)客戶成功構(gòu)建企業(yè)級應(yīng)用!歡迎咨詢:023-68661681,慧都科技助力企業(yè)邁向新高度!
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都網(wǎng)