|
//------------------------------------------------------------------------------
// <copyright file="ListDataHelper.cs" company="Microsoft">
// Copyright (c) Microsoft Corporation. All rights reserved.
// </copyright>
//------------------------------------------------------------------------------
using System.Collections;
using System.Diagnostics;
namespace System.Web.UI.MobileControls
{
/*
* List Data Helper class.
*
* Copyright (c) 2000 Microsoft Corporation
*/
[Obsolete("The System.Web.Mobile.dll assembly has been deprecated and should no longer be used. For information about how to develop ASP.NET mobile applications, see http://go.microsoft.com/fwlink/?LinkId=157231.")]
internal sealed class ListDataHelper
{
private IListControl _parent;
private StateBag _parentViewState;
private MobileListItemCollection _items;
private Object _dataSource;
private IEnumerable _resolvedDataSource;
private int _dataSourceCount = -1;
private String _dataTextField;
private String _dataValueField;
private bool _bindFromFields;
internal /*public*/ ListDataHelper(IListControl parent, StateBag parentViewState)
{
_parent = parent;
_parentViewState = parentViewState;
}
internal /*public*/ MobileListItemCollection Items
{
get
{
if (_items == null)
{
_items = new MobileListItemCollection();
if (_parent.TrackingViewState)
{
((IStateManager)_items).TrackViewState();
}
}
return _items;
}
}
internal /*public*/ bool HasItems()
{
return _items != null;
}
internal /*public*/ Object DataSource
{
get
{
return _dataSource;
}
set
{
_dataSource = value;
_resolvedDataSource = null;
}
}
internal /*public*/ String DataMember
{
get
{
String s = (String)_parentViewState["DataMember"];
return s == null ? String.Empty : s;
}
set
{
_parentViewState["DataMember"] = value;
}
}
internal /*public*/ String DataTextField
{
get
{
String s = (String)_parentViewState["DataTextField"];
return (s != null) ? s : String.Empty;
}
set
{
_parentViewState["DataTextField"] = value;
}
}
internal /*public*/ String DataValueField
{
get
{
String s = (String)_parentViewState["DataValueField"];
return (s != null) ? s : String.Empty;
}
set
{
_parentViewState["DataValueField"] = value;
}
}
internal /*public*/ IEnumerable ResolvedDataSource
{
get
{
if (_resolvedDataSource == null)
{
_resolvedDataSource =
DataSourceHelper.GetResolvedDataSource(DataSource, DataMember);
}
return _resolvedDataSource;
}
}
/*
internal int DataSourceCount
{
get
{
if (_dataSourceCount == -1)
{
IEnumerable dataSource = ResolvedDataSource;
if (dataSource != null)
{
ICollection collection = dataSource as ICollection;
if (collection != null)
{
_dataSourceCount = collection.Count;
}
else
{
int count = 0;
IEnumerator enumerator = dataSource.GetEnumerator();
while (enumerator.MoveNext())
{
count++;
}
_dataSourceCount = count;
}
}
else
{
_dataSourceCount = 0;
}
}
return _dataSourceCount;
}
}
*/
internal /*public*/ void CreateItems(IEnumerable dataSource)
{
Debug.Assert (dataSource != null);
Items.Clear();
_dataTextField = DataTextField;
_dataValueField = DataValueField;
_bindFromFields = (_dataTextField.Length > 0) || (_dataValueField.Length > 0);
foreach (Object dataItem in dataSource)
{
MobileListItem listItem = CreateItem(dataItem);
if (listItem != null)
{
AddItem(listItem);
}
}
_dataSourceCount = Items.Count;
}
private MobileListItem CreateItem(Object dataItem)
{
MobileListItem listItem = null;
String textField = null;
String valueField = null;
if (_bindFromFields)
{
if (_dataTextField.Length > 0)
{
textField = DataBinder.GetPropertyValue(dataItem, _dataTextField, "{0}");
}
if (_dataValueField.Length > 0)
{
valueField = DataBinder.GetPropertyValue(dataItem, _dataValueField, "{0}");
}
}
else
{
textField = dataItem.ToString();
}
listItem = new MobileListItem(dataItem, textField, valueField);
// Use delegated data binding, if specified.
if (dataItem != null)
{
_parent.OnItemDataBind(new ListDataBindEventArgs(listItem, dataItem));
}
return listItem;
}
internal /*public*/ void AddItem(MobileListItem item)
{
MobileListItemCollection items = Items;
items.Add(item);
}
}
}
|