annotate Source/Web/UI/WebObjectBinder.cs @ 4:f757da6161a1

!bug 100 + 2h fixed gregression
author cin
date Sun, 24 Aug 2014 17:57:42 +0400
parents f990fcb411a9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1 using System;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2 using System.Collections;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3 using System.ComponentModel;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4 using System.Drawing;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5 using System.Drawing.Design;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6 using System.Web.Compilation;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7 using System.Web.UI;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9 using BLToolkit.ComponentModel;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
10 using BLToolkit.ComponentModel.Design;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
11 using BLToolkit.EditableObjects;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
12
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
13 namespace BLToolkit.Web.UI
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
14 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
15 [DefaultProperty("TypeName")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
16 [ToolboxBitmap(typeof(WebObjectBinder))]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
17 #if !FW4
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
18 [Designer(typeof(BLToolkit.Web.UI.Design.WebObjectBinderDesigner))]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
19 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
20 [PersistChildren(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
21 [ParseChildren(true)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
22 [Description("BLToolkit Web Object Binder")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
23 [DisplayName("Object Binder")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
24 public class WebObjectBinder : DataSourceControl, IListSource
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
25 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
26 #region Constructors
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
27
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
28 public WebObjectBinder()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
29 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
30 _objectBinder.ListChanged += _objectBinder_ListChanged;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
31 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
32
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
33 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
34
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
35 #region Public Members
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
36
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
37 [RefreshProperties(RefreshProperties.Repaint)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
38 [DefaultValue(null)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
39 [Category("Data")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
40 [Editor(typeof(TypeNameEditor), typeof(UITypeEditor))]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
41 public string TypeName
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
42 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
43 get
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
44 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
45 Type type = _objectBinder.ItemType;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
46 return type == null ? "(none)" : type.FullName;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
47 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
48 set
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
49 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
50 _objectBinder.ItemType = string.IsNullOrEmpty(value) || value == "(none)"?
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
51 null: BuildManager.GetType(value, false, true);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
52 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
53 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
54
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
55 [RefreshProperties(RefreshProperties.Repaint)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
56 [DefaultValue(null)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
57 [Category("Data")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
58 [Editor(typeof(ObjectViewTypeNameEditor), typeof(UITypeEditor))]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
59 public string ObjectViewTypeName
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
60 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
61 get
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
62 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
63 Type type = _objectBinder.ObjectViewType;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
64 return type == null ? "(none)" : type.FullName;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
65 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
66 set
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
67 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
68 _objectBinder.ObjectViewType = string.IsNullOrEmpty(value) || value == "(none)"?
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
69 null: BuildManager.GetType(value, false, true);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
70 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
71 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
72
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
73 [Browsable(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
74 [RefreshProperties(RefreshProperties.Repaint)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
75 [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
76 public object Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
77 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
78 get { return _objectBinder.Object; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
79 set { _objectBinder.Object = value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
80 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
81
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
82 [Browsable(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
83 [RefreshProperties(RefreshProperties.Repaint)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
84 [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
85 public IList List
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
86 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
87 get { return _objectBinder.List; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
88 set { _objectBinder.List = value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
89 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
90
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
91 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
92
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
93 #region Protected members
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
94
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
95 internal ObjectBinder _objectBinder = new ObjectBinder();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
96
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
97 private void _objectBinder_ListChanged(object sender, ListChangedEventArgs e)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
98 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
99 switch (e.ListChangedType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
100 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
101 case ListChangedType.PropertyDescriptorAdded:
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
102 case ListChangedType.PropertyDescriptorChanged:
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
103 case ListChangedType.PropertyDescriptorDeleted:
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
104 RaiseDataSourceChangedEvent(e);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
105 break;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
106 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
107 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
108
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
109 public override void Dispose()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
110 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
111 _objectBinder.Dispose();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
112
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
113 base.Dispose();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
114 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
115
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
116 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
117
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
118 #region IListSource Members
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
119
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
120 bool IListSource.ContainsListCollection
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
121 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
122 get { return false; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
123 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
124
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
125 IList IListSource.GetList()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
126 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
127 return _objectBinder.List;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
128 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
129
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
130 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
131
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
132 #region IDataSource Members
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
133
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
134 private ObjectDataSourceView _view;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
135
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
136 protected override DataSourceView GetView(string viewName)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
137 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
138 if (_view == null)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
139 _view = new ObjectDataSourceView(this, "DefaultView");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
140
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
141 return _view;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
142 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
143
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
144 protected override ICollection GetViewNames()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
145 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
146 return new string[] { "DefaultView" };
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
147 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
148
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
149 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
150
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
151 #region ObjectDataSourceView
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
152
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
153 class ObjectDataSourceView : DataSourceView
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
154 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
155 public ObjectDataSourceView(WebObjectBinder owner, string viewName)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
156 : base(owner, viewName)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
157 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
158 _owner = owner;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
159 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
160
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
161 readonly WebObjectBinder _owner;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
162
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
163 protected override IEnumerable ExecuteSelect(DataSourceSelectArguments arguments)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
164 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
165 return new ObjectEnumerator(_owner._objectBinder, arguments);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
166 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
167
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
168 public override bool CanDelete { get { return _owner._objectBinder.AllowRemove; } }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
169 public override bool CanInsert { get { return _owner._objectBinder.AllowNew; } }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
170 public override bool CanUpdate { get { return _owner._objectBinder.AllowEdit; } }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
171 public override bool CanPage { get { return true; } }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
172 public override bool CanSort { get { return true; } }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
173 public override bool CanRetrieveTotalRowCount { get { return true; } }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
174 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
175
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
176 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
177
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
178 #region ObjectEnumerator
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
179
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
180 class ObjectEnumerator : ICollection
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
181 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
182 public ObjectEnumerator(ObjectBinder objectBinder, DataSourceSelectArguments arguments)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
183 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
184 _objectBinder = objectBinder;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
185 _arguments = arguments;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
186 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
187
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
188 private readonly ObjectBinder _objectBinder;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
189 private readonly DataSourceSelectArguments _arguments;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
190
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
191 #region ICollection Members
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
192
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
193 public void CopyTo(Array array, int index)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
194 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
195 _objectBinder.List.CopyTo(array, index);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
196 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
197
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
198 public int Count
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
199 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
200 get { return _objectBinder.List.Count; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
201 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
202
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
203 public bool IsSynchronized
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
204 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
205 get { return _objectBinder.List.IsSynchronized; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
206 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
207
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
208 public object SyncRoot
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
209 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
210 get { return _objectBinder.List.SyncRoot; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
211 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
212
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
213 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
214
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
215 #region IEnumerable Members
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
216
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
217 public IEnumerator GetEnumerator()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
218 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
219 _arguments.AddSupportedCapabilities(DataSourceCapabilities.Page);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
220 _arguments.AddSupportedCapabilities(DataSourceCapabilities.Sort);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
221 _arguments.AddSupportedCapabilities(DataSourceCapabilities.RetrieveTotalRowCount);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
222
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
223 EditableArrayList list = (EditableArrayList)_objectBinder.List;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
224
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
225 _arguments.TotalRowCount = list.Count;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
226
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
227 if (!string.IsNullOrEmpty(_arguments.SortExpression))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
228 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
229 list = new EditableArrayList(list.ItemType, list.Count);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
230 list.AddRange(_objectBinder.List);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
231 list.SortEx(_arguments.SortExpression);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
232 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
233
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
234 int start = _arguments.StartRowIndex >= 0? _arguments.StartRowIndex: 0;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
235 int count = _arguments.MaximumRows > 0?
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
236 Math.Min(_arguments.MaximumRows, list.Count): list.Count;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
237
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
238 for (int i = 0; i < count; i++)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
239 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
240 object o = list[i + start];
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
241
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
242 yield return o is ICustomTypeDescriptor? o: new ObjectHolder(o, _objectBinder);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
243 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
244 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
245
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
246 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
247 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
248
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
249 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
250 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
251 }