ASP.NET C# Disable/Enable ListItems






4.75/5 (12 votes)
Aug 27, 2004
1 min read

175415
This article demonstrates how it is possible to disable/enable individual ListItems in a ASP.NET CheckBoxList Server Control.
A Brief Introduction
Have you ever wanted to disable/enable individual list items in a ListControl
Server Control in ASP.NET? You might have tried to add attributes to the individual ListItem
s in a Server Control such as a CheckBoxList
or DropDownList
? It's impossible and a known bug. I needed to implement a way to disable/enable individual items of a CheckBoxList
when a certain item was checked/unchecked. The problem was solved by adding a JavaScript function that is invoked by the onclick
event of the CheckBoxList
.
Instructions
- Add a
CheckBoxList
to your ASP.NET WebForm and give it anID
ofcheckBoxListTest
. - Add a call to the
LoadCheckBoxList
in thePage_Load
event. - Add the
LoadCheckBoxList
method to your webpage class. - Add the JavaScript function inside the head of the HTML.
ASP.NET CodeBehind
The following method adds the onclick
function disableListItems
to the CheckBoxList
attributes collection. The function will disable all the items except for the last item in the list when it is checked. The method also adds three items to the CheckBoxList
.
private void Page_Load(object sender, System.EventArgs e)
{
if(!this.IsPostBack)
{
LoadCheckBoxList();
}
}
private void LoadCheckBoxList()
{
this.checkBoxListTest.Attributes.Add("onclick",
"disableListItems('checkBoxListTest', '2', '3')");
// Add three items to the CheckBoxList.
for(int i=0; i < 3; i++)
{
ListItem item = new ListItem(i.ToString(), i.ToString());
this.checkBoxListTest.Items.Add(item);
}
}
The following code is the JavaScript function that is invoked by the onclick
event of the CheckBoxList
.
JavaScript Function
/*******************************************************************
This is the javascript function that is invoked when the checkboxlist
is clicked.
Function: disableListItems.
Inputs: checkBoxListId - The id of the checkbox list.
checkBoxIndex - The index of the checkbox to verify.
i.e If the 4th checkbox is clicked and
you want the other checkboxes to be
disabled the index would be 3.
numOfItems - The number of checkboxes in the list.
Purpose: Disables all the checkboxes when the checkbox to verify is
checked. The checkbox to verify is never disabled.
********************************************************************/
function disableListItems(checkBoxListId, checkBoxIndex, numOfItems)
{
// Get the checkboxlist object.
objCtrl = document.getElementById(checkBoxListId);
// Does the checkboxlist not exist?
if(objCtrl == null)
{
return;
}
var i = 0;
var objItem = null;
// Get the checkbox to verify.
var objItemChecked =
document.getElementById(checkBoxListId + '_' + checkBoxIndex);
// Does the individual checkbox exist?
if(objItemChecked == null)
{
return;
}
// Is the checkbox to verify checked?
var isChecked = objItemChecked.checked;
// Loop through the checkboxes in the list.
for(i = 0; i < numOfItems; i++)
{
objItem = document.getElementById(checkBoxListId + '_' + i);
if(objItem == null)
{
continue;
}
// If i does not equal the checkbox that is never to be disabled.
if(i != checkBoxIndex)
{
// Disable/Enable the checkbox.
objItem.disabled = isChecked;
// Should the checkbox be disabled?
if(isChecked)
{
// Uncheck the checkbox.
objItem.checked = false;
}
}
}
}
Conclusion
The above code shows that it is possible to enable/disable individual items within a ListBox
Server Control in ASP.NET. You can modify the C# and JavaScript code to meet your needs.