Click here to Skip to main content
15,884,537 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hi, good day.

Here i'm developing a application with five DropDownList Controls (cascading), with functionality to hide automatically when no sub-tree is availabe, along with that i'm storing "SelectedItem" IDs to five session variables, upto now everything is fine, but when i trigger selectionevent of upper(say 2nd DDL which is having a subtree in DDL3 along with Session["s3"]) DDL selection, if the new result doen't generate a subtree it hides 3rd DDL (i'm happy) but its Session value is not changing to null, here give a try to readch my requirement, please check my code

// Global variables with private acess level 
string _L1, _L2, _L3, _L4, _L5; 

string[] Values; 

_L1 = _L2 = _L3 = _L4 = _L5 = null; // in PageLOading (!Page.IsPostback) 

public void HideRemainingDDLs(DropDownList _ddlname) 
{ 
// _ddlname is the name of DropDownList, which doesn't have a sub-tree, in our case DDL2 

 
 // 
_L1 = Session["L1ID"] == null ? null : Session["L1ID"].ToString(); 
_L2 = Session["L2ID"] == null ? null : Session["L2ID"].ToString(); 
_L3 = Session["L3ID"] == null ? null : Session["L3ID"].ToString(); 
_L4 = Session["L4ID"] == null ? null : Session["L4ID"].ToString(); 
_L5 = Session["L5ID"] == null ? null : Session["L5ID"].ToString(); 

UpdatePanel up = (UpdatePanel)TagEditor; 

Values = new string[5] { _L1, _L2, _L3, _L4, _L5 }; // Storing Session Variable as a string array 

if (up.HasControls()) 
{ 
foreach (Control subCtrl in up.Controls[0].Controls) 
{ 
if (subCtrl is DropDownList) // Check only if the Controls is a DropDownList 
{ 
DropDownList ddl = subCtrl as DropDownList; 
if (ddl.Visible == true) // Check only visible controls 
{ 
if (ddl != null && ddl.TabIndex > _ddlname.TabIndex) // DDL TabIndex starts from 0 
{ 
int i = ddl.TabIndex; 
Values[i] = null; 
ddl.Visible = false; // Hide the current DDL 
ddl.Items.Clear(); // remove all items in the DDL 
} 
} 
} 
} 
} 
} 


Example DDL SelectedIndexChanged Event 

protected void DDLSubL1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
if (populate("PopulateL2Subjects", DDLSubL2, DDLSubL1, out _subject1)) // method to retive data from DB, returns bool value. 
{ 
DDLSubL2.Visible = true; 
} 
else 
{ 
HideRemainingDDLs(DDLSubL1); // Method which is implemented above 
DDLSubL2.Items.Add("Select chapter"); 
} 
// set the value irrespective of new list. 
Session["L1ID"]= _subject1; 
} 
Posted
Comments
Sergey Alexandrovich Kryukov 1-Nov-12 15:02pm    
Nullify to null is done in exact same way as unite to one. :-)
Jokes aside, what's the problem? How to assign indexed property (or anything) to null?
--SA

1 solution

Just added following line
Session["L" + i + "ID"] = null;

remove
Values[i] = null;
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900