using System;
using System.Data;
using System.Configuration;
using System.Collections.Specialized;
using System.Web;
using System.Drawing;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.Collections;
using System.Drawing.Design;
namespace HlxControl
{
[ParseChildren(true)
,PersistChildren(false)]
public class DoubleListCheck : WebControl, IPostBackDataHandler
{
private ArrayList arrSelectedValue;
private ArrayList arrAvailableValue;
//------------------------------------------------------------------------------------
// C L I E N T I N S T A N C E N A M E
//
[Bindable(true)
,Category("Appearance")]
public string ClientInstanceName
{
get
{
string strValue = (string)ViewState["ClientInstanceName"];
string strResult;
set
{
ViewState["ClientInstanceName"] = value;
}
}
//------------------------------------------------------------------------------------
// A V A I L A B L E V A L U E
//
[Bindable(true)
,Category("Data")
,Description("List of available values")
,Editor(typeof(DoubleListCheckEditor), typeof(UITypeEditor))
,PersistenceMode(PersistenceMode.InnerProperty)]
public ArrayList AvailableValue
{
get
{
if (arrAvailableValue == null)
arrAvailableValue = new ArrayList();
return arrAvailableValue;
}
}
//------------------------------------------------------------------------------------
// S E L E C T E D V A L U E
//
[Bindable(true)
,Category("Data")
,Description("List of selected values")
,Editor(typeof(DoubleListCheckEditor), typeof(UITypeEditor))
,PersistenceMode(PersistenceMode.InnerProperty)]
public ArrayList SelectedValue
{
get
{
if (arrSelectedValue == null)
arrSelectedValue = new ArrayList();
return arrSelectedValue;
}
}
//------------------------------------------------------------------------------------
// C R E A T E C H I L D C O N T R O L S
//
// Override the CreateChildControls method to
// add child controls to the Employees property when this
// custom control is requested from a page.
protected override void CreateChildControls()
{
base.CreateChildControls();
Controls.Clear();
CreateControlHierarchy();
ClearChildViewState();
}
//------------------------------------------------------------------------------------
// A D D A V A I L A B L E I T E M
//
public void AddAvailableItem(string strDescription, string strID, string strValue)
{
DoubleListCheckItem oItem = new DoubleListCheckItem(strID, strDescription, strValue);
arrAvailableValue.Add(oItem);
}
//------------------------------------------------------------------------------------
// A D D S E L E C T E D I T E M
//
public void AddSelectedItem(string strDescription, string strID, string strValue)
{
DoubleListCheckItem oItem = new DoubleListCheckItem(strID, strDescription, strValue);
arrSelectedValue.Add(oItem);
}
//------------------------------------------------------------------------------------
// A D D R O W
//
private string AddRow(string strDescription, string strID, string strValue)
{
string strHTML = string.Empty;
//------------------------------------------------------------------------------------
// R E N D E R
//
protected string renderHtml()
{
// INITIALIZE
if (ClientInstanceName == string.Empty)
ClientInstanceName = this.ID + "_js";
//---------------------------------------------------------------------------------------------------
// C R E A T E C O N T R O L H I E R A R C H Y
//
/// <summary>
///
/// </summary>
protected virtual void CreateControlHierarchy()
{
/* oTextbox = new TextBox();
oTextbox.Text = Text;
this.Controls.Add(oTextbox);
oLabel = new Label();
oLabel.Text = Title;
this.Controls.Add(oLabel);*/
// Register a helper hidden field
Page.ClientScript.RegisterHiddenField(ID, "");
}
protected override void AddParsedSubObject(object o)
{
int i;
Member
1 Points
9 Posts
Re: Collection disappear
Oct 25, 2011 03:38 PM|sderrico|LINK
File: DoubleListCheck.cs
using System;
using System.Data;
using System.Configuration;
using System.Collections.Specialized;
using System.Web;
using System.Drawing;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.Collections;
using System.Drawing.Design;
namespace HlxControl
{
[ParseChildren(true)
,PersistChildren(false)]
public class DoubleListCheck : WebControl, IPostBackDataHandler
{
private ArrayList arrSelectedValue;
private ArrayList arrAvailableValue;
//------------------------------------------------------------------------------------
// C L I E N T I N S T A N C E N A M E
//
[Bindable(true)
,Category("Appearance")]
public string ClientInstanceName
{
get
{
string strValue = (string)ViewState["ClientInstanceName"];
string strResult;
if (strValue != null)
strResult = strValue;
else
strResult = string.Empty;
return strResult;
}
set
{
ViewState["ClientInstanceName"] = value;
}
}
//------------------------------------------------------------------------------------
// A V A I L A B L E V A L U E
//
[Bindable(true)
,Category("Data")
,Description("List of available values")
,Editor(typeof(DoubleListCheckEditor), typeof(UITypeEditor))
,PersistenceMode(PersistenceMode.InnerProperty)]
public ArrayList AvailableValue
{
get
{
if (arrAvailableValue == null)
arrAvailableValue = new ArrayList();
return arrAvailableValue;
}
}
//------------------------------------------------------------------------------------
// S E L E C T E D V A L U E
//
[Bindable(true)
,Category("Data")
,Description("List of selected values")
,Editor(typeof(DoubleListCheckEditor), typeof(UITypeEditor))
,PersistenceMode(PersistenceMode.InnerProperty)]
public ArrayList SelectedValue
{
get
{
if (arrSelectedValue == null)
arrSelectedValue = new ArrayList();
return arrSelectedValue;
}
}
//------------------------------------------------------------------------------------
// C R E A T E C H I L D C O N T R O L S
//
// Override the CreateChildControls method to
// add child controls to the Employees property when this
// custom control is requested from a page.
protected override void CreateChildControls()
{
base.CreateChildControls();
Controls.Clear();
CreateControlHierarchy();
ClearChildViewState();
}
//------------------------------------------------------------------------------------
// A D D A V A I L A B L E I T E M
//
public void AddAvailableItem(string strDescription, string strID, string strValue)
{
DoubleListCheckItem oItem = new DoubleListCheckItem(strID, strDescription, strValue);
arrAvailableValue.Add(oItem);
}
//------------------------------------------------------------------------------------
// A D D S E L E C T E D I T E M
//
public void AddSelectedItem(string strDescription, string strID, string strValue)
{
DoubleListCheckItem oItem = new DoubleListCheckItem(strID, strDescription, strValue);
arrSelectedValue.Add(oItem);
}
//------------------------------------------------------------------------------------
// A D D R O W
//
private string AddRow(string strDescription, string strID, string strValue)
{
string strHTML = string.Empty;
strHTML += "<tr class=\"jsDoubleListCheck_row\">";
strHTML += " <td><input type=\"checkbox\" /></td>";
strHTML += " <td>" + strDescription + "</td>";
strHTML += " <td><input type=\"text\" size=\"4\" maxlength=\"4\" value=\"" + strValue + "\"/></td>";
strHTML += " <td><input type=\"hidden\" value=\"" + strID + "\" /></td>";
strHTML += "</tr>";
return strHTML;
}
//------------------------------------------------------------------------------------
// R E N D E R
//
protected string renderHtml()
{
// INITIALIZE
if (ClientInstanceName == string.Empty)
ClientInstanceName = this.ID + "_js";
string m_ID = ClientInstanceName;
string strHTML = string.Empty;
// OPEN OBJECT
strHTML += "<div class=\"jsDoubleListCheck_frame\">";
// OPEN ROW DATA
strHTML += "<div class=\"jsDoubleListCheck_row\">";
// COLUMN SELECTED
strHTML += " <div class=\"jsDoubleListCheck_column\">";
strHTML += " <table id=\"" + m_ID + "_table_selected\" class=\"jsDoubleListCheck_table jsDoubleListCheck_column_selected\">";
foreach (DoubleListCheckItem oItem in SelectedValue)
strHTML += AddRow(oItem.Description, oItem.Value, "");
strHTML += " </table>";
strHTML += " </div>";
// COLUMN AVAILABLE
strHTML += " <div class=\"jsDoubleListCheck_column\">";
strHTML += " <table id=\"" + m_ID + "_table_available\" class=\"jsDoubleListCheck_table jsDoubleListCheck_column_available\">";
foreach (DoubleListCheckItem oItem in AvailableValue)
strHTML += AddRow(oItem.Description, oItem.Value, "");
strHTML += " </table>";
strHTML += " </div>";
// CLOSE ROW DATA
strHTML += "</div>";
// OPEN ROW BUTTON
strHTML += "<div class=\"jsDoubleListCheck_row\">";
// MOVE TO RIGHT
strHTML += " <div class=\"jsDoubleListCheck_column\">";
strHTML += " <input class=\"jsDoubleListCheck_button\" type=\"button\" value=\"Remove\" onclick=\"" + m_ID + ".moveRow('selected', 'available')\" />";
strHTML += " </div>";
// MOVE TO LEFT
strHTML += " <div class=\"jsDoubleListCheck_column\">";
strHTML += " <input class=\"jsDoubleListCheck_button\" type=\"button\" value=\"Add\" onclick=\"" + m_ID + ".moveRow('available', 'selected')\" />";
strHTML += " </div>";
// CLOSE ROW BUTTON
strHTML += "</div>";
// START - DATA
strHTML += "<div class=\"jsDoubleListCheck_row\">";
strHTML += "<input style=\"visibility: hidden;\" id=\"" + m_ID + "_data\" type=\"text\" />";
strHTML += "</div>";
// END - DATA
// CLOSE OBJECT
strHTML += "</div>";
// JAVASCRIPT
strHTML += "<script language=\"javascript\" type=\"text/javascript\">";
strHTML += "// COMPONENT INITIALIZATION";
strHTML += "\nvar " + m_ID + " = new jsDoubleListCheck('" + m_ID + "');";
strHTML += "</script>";
// RETURN
return strHTML;
}
protected override void Render(HtmlTextWriter writer)
{
writer.Write(renderHtml());
/*
TextBox oTextbox1;
writer.AddAttribute("border", "1");
writer.AddAttribute("cellpadding", "0");
writer.AddAttribute("cellspacing", "0");
writer.RenderBeginTag(HtmlTextWriterTag.Table);
writer.RenderBeginTag(HtmlTextWriterTag.Tr);
// Label
writer.RenderBeginTag(HtmlTextWriterTag.Td);
oLabel.RenderControl(writer);
writer.RenderEndTag(); //Td
// Textbox
writer.RenderBeginTag(HtmlTextWriterTag.Td);
oTextbox.RenderControl(writer);
writer.RenderEndTag(); //Td
writer.RenderEndTag(); //Tr
foreach (DoubleListCheckItem oItem in SelectedValue)
{
writer.RenderBeginTag(HtmlTextWriterTag.Tr);
writer.RenderBeginTag(HtmlTextWriterTag.Td);
oTextbox1 = new TextBox();
oTextbox1.Text = oItem.Description;
oTextbox1.RenderControl(writer);
writer.RenderEndTag(); //Td
writer.RenderEndTag(); //Tr
}
writer.RenderEndTag(); //Table
//RenderContents(writer);*/
}
protected override void OnInit(EventArgs e)
{
arrSelectedValue = new ArrayList();
arrAvailableValue = new ArrayList();
base.OnInit(e);
EnsureChildControls();
}
bool IPostBackDataHandler.LoadPostData(string postDataKey, NameValueCollection postValues)
{
string postedValue = string.Empty;
/* if (postValues[oTextbox.UniqueID] != null)
postedValue = postValues[oTextbox.UniqueID].ToString();
if (postedValue != Text)
{
Text = postedValue;
return true;
}*/
return false;
}
void IPostBackDataHandler.RaisePostDataChangedEvent()
{
}
//---------------------------------------------------------------------------------------------------
// C R E A T E C O N T R O L H I E R A R C H Y
//
/// <summary>
///
/// </summary>
protected virtual void CreateControlHierarchy()
{
/* oTextbox = new TextBox();
oTextbox.Text = Text;
this.Controls.Add(oTextbox);
oLabel = new Label();
oLabel.Text = Title;
this.Controls.Add(oLabel);*/
// Register a helper hidden field
Page.ClientScript.RegisterHiddenField(ID, "");
}
protected override void AddParsedSubObject(object o)
{
int i;
i = 0;
}
//protected override Type
}
}
Web Development Consultant
Mobile : (438) 882-8687
Email : sebastien@hollox.net