3 // Permission is hereby granted, free of charge, to any person obtaining
4 // a copy of this software and associated documentation files (the
5 // "Software"), to deal in the Software without restriction, including
6 // without limitation the rights to use, copy, modify, merge, publish,
7 // distribute, sublicense, and/or sell copies of the Software, and to
8 // permit persons to whom the Software is furnished to do so, subject to
9 // the following conditions:
11 // The above copyright notice and this permission notice shall be
12 // included in all copies or substantial portions of the Software.
14 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24 * Namespace : System.Web.Mobile.Util
25 * Class : ListDataHelper
26 * Author : Gaurav Vaish
28 * Copyright : 2003 with Gaurav Vaish, and with
32 using System
.Collections
;
34 using System
.Web
.Mobile
;
35 using System
.Web
.UI
.MobileControls
;
37 namespace System
.Web
.Mobile
.Util
39 internal class ListDataHelper
41 private object dataSource
;
42 private int dataSourceCount
= -1;
43 private IEnumerable resolvedDataSrc
;
44 private MobileListItemCollection items
;
45 private string dataTextField
;
46 private string dataValueField
;
47 private bool bindFromFields
;
49 private IListControl parent
;
50 private StateBag parentViewState
;
52 public ListDataHelper(IListControl parent
, StateBag parentViewState
)
55 this.parentViewState
= parentViewState
;
58 public string DataMember
62 object o
= parentViewState
["DataMember"];
69 parentViewState
["DataMember"] = value;
73 public string DataTextField
77 object o
= parentViewState
["DataTextField"];
84 parentViewState
["DataTextField"] = value;
88 public string DataValueField
92 object o
= parentViewState
["DataValueField"];
99 parentViewState
["DataValueField"] = value;
103 public object DataSource
107 return this.dataSource
;
111 this.dataSource
= value;
115 public int DataSourceCount
119 if(dataSourceCount
== -1)
121 if(ResolvedDataSource
!= null)
123 if(ResolvedDataSource
is ICollection
)
124 dataSourceCount
= ((ICollection
)ResolvedDataSource
).Count
;
127 return dataSourceCount
;
131 public IEnumerable ResolvedDataSource
135 if(this.resolvedDataSrc
== null)
137 resolvedDataSrc
= DataSourceHelper
.GetResolvedDataSource(DataSource
, DataMember
);
139 return resolvedDataSrc
;
143 public MobileListItemCollection Items
149 items
= new MobileListItemCollection();
150 if(parent
.TrackingViewState
)
151 ((IStateManager
)items
).TrackViewState();
157 public void AddItem(MobileListItem item
)
162 public MobileListItem
CreateItem(object dataItem
)
164 MobileListItem retVal
;
165 string itemText
= null;
166 string itemValue
= null;
169 if(this.dataTextField
.Length
> 0)
171 itemText
= DataBinder
.GetPropertyValue(dataItem
,
172 dataTextField
, "{0}");
174 if(this.dataValueField
.Length
> 0)
176 itemValue
= DataBinder
.GetPropertyValue(dataItem
,
177 dataValueField
, "{0}");
181 itemText
= dataItem
.ToString();
183 retVal
= new MobileListItem(dataItem
, itemText
, itemValue
);
186 parent
.OnItemDataBind(new ListDataBindEventArgs(retVal
, dataItem
));