|
/* AutoSuggest ASP.NET server controls, version 1.0, September 1st, 2009.
* (c) 2009 Jason Ensinger (jason_ensinger@hotmail.com)
*
* Latest version download and documentation:
* http://www.codeproject.com/
*
* Based on Auto-suggest control, version 2.3, August 18th 2009
* by Dmitriy Khudorozhkov (dmitrykhudorozhkov@yahoo.com).
* http://www.codeproject.com/KB/scripting/AutoSuggestControl.aspx
*
* Based on "Auto-complete Control" by zichun:
* http://www.codeproject.com/KB/scripting/jsactb.aspx
*
* This software is provided "as-is", without any express or implied warranty.
* In no event will the author be held liable for any damages arising from the
* use of this software.
*
* Permission is granted to anyone to use this software for any purpose,
* including commercial applications, and to alter it and redistribute it
* freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must not
* claim that you wrote the original software. If you use this software
* in a product, an acknowledgment in the product documentation would be
* appreciated but is not required.
*
* 2. Altered source versions must be plainly marked as such, and must not be
* misrepresented as being the original software.
*
* 3. This notice may not be removed or altered from any source distribution.
*/
using System.Collections;
using System.ComponentModel;
using System.Web.UI;
using System.Web.UI.Design;
using System.Web.UI.WebControls;
using System.Drawing;
using System.Reflection;
namespace AutoSuggest
{
/// <summary>
/// Base control for a data bound list with Ajax Output properties.
/// </summary>
[DefaultProperty("Items"), ParseChildren(true), PersistChildren(false)]
public abstract class AutoSuggestListBase : DataBoundControl
{
#region Fields
private string myTextValueDelimiter;
private ListItemCollection myItems;
private string myDataValueField;
private string myDataTextFormatString;
private string myDataTextField;
private string myItemDelimiter;
#endregion
#region Constructor
public AutoSuggestListBase()
{
myItemDelimiter = "|";
myTextValueDelimiter = ",";
myDataTextField = string.Empty;
myDataTextFormatString = string.Empty;
myDataValueField = string.Empty;
myItems = new ListItemCollection();
}
#endregion
#region Methods
protected override void PerformDataBinding(IEnumerable dataSource)
{
if (dataSource != null && !this.DesignMode)
{
object text;
object value;
foreach (object row in dataSource)
{
text = null;
value = null;
if (this.DataTextFormatString != string.Empty
&& this.DataTextField != string.Empty)
text = DataBinder.GetPropertyValue(row, this.DataTextField
, this.DataTextFormatString);
else if (this.DataTextField != string.Empty)
text = DataBinder.GetPropertyValue(row, this.DataTextField);
if (this.DataValueField != string.Empty)
value = DataBinder.GetPropertyValue(row, this.DataValueField);
if (text != null)
{
if (value != null)
this.Items.Add(new ListItem(text.ToString(), value.ToString()));
else
this.Items.Add(new ListItem(text.ToString()));
}
}
}
}
#endregion
#region Properties
/// <summary>
/// Gets the collection of items in the list.
/// </summary>
[Category("Data")]
[Description("The collection of items in the list.")]
[MergableProperty(false)]
[PersistenceMode(PersistenceMode.InnerProperty), NotifyParentProperty(true)]
public ListItemCollection Items
{
get { return myItems; }
}
/// <summary>
/// Gets or sets the character that delimits entries in the AJAX output.
/// </summary>
[Category("AJAX Output")]
[Description("Indicates the character that delimits entries in the AJAX output.")]
[DefaultValue("|")]
public string ItemDelimiter
{
get { return myItemDelimiter; }
set { myItemDelimiter = value; }
}
/// <summary>
/// Gets or sets the field in the data source which provides the item value.
/// </summary>
[Category("Data")]
[Description("The field in the data source which provides the item value.")]
[DefaultValue("")]
[NotifyParentProperty(true), TypeConverter(typeof(DataFieldConverter))]
public string DataValueField
{
get { return myDataValueField; }
set { myDataValueField = value; }
}
/// <summary>
/// Gets or sets the formatting applied to the text field. For example, {0:d}.
/// </summary>
[Category("Data")]
[Description("The formatting applied to the text field. For example, {0:d}.")]
[DefaultValue("")]
public string DataTextFormatString
{
get { return myDataTextFormatString; }
set { myDataTextFormatString = value; }
}
/// <summary>
/// Gets or sets the field in the data source which provides the item text.
/// </summary>
[Category("Data")]
[Description("The field in the data source which provides the item text.")]
[DefaultValue("")]
[NotifyParentProperty(true)]
[TypeConverter(typeof(DataFieldConverter))]
public string DataTextField
{
get { return myDataTextField; }
set { myDataTextField = value; }
}
/// <summary>
/// Gets or sets the character that delimits text and values in the AJAX output.
/// </summary>
[Category("AJAX Output")]
[Description("Indicates the character that delimits text and values in the AJAX output.")]
[DefaultValue(",")]
public string TextValueDelimiter
{
get { return myTextValueDelimiter; }
set { myTextValueDelimiter = value; }
}
#endregion
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.