Single select Checkbox in a Repeater control

I Have a Checkbox in a repeater control.. like this

<asp:Repeater ID="rptDetails" runat="server" EnableViewState="False" >
                                        <td width="1%">
                                                <input id="chkSelected" type="checkbox" value="<%#Container.DataItem("ContactID")%>" name="ItemID" runat="server" />
                                         <td..... And so on with other values

The user should be able to check only checkbox at a time in this repeater control..
When the user checks a different check box in the repeater control.. then the one which the user selected previously must be unchecked automatically..

Also.. I want to loop through the repeater control.. to see which checkbox the user has checked..

How can i achieve this??

Please help!!!
Who is Participating?

[Webinar] Streamline your web hosting managementRegister Today

Hamed ZaghaghiConnect With a Mentor ProgrammerCommented:
drag and drop a CheckBoxlist on your form, to create a checkboxlist, or use this way to create it programatically:

CheckBoxList cbl = new CheckBoxList();

then create a datasource, and set it to checkboxlist

I use this code in pageload event handler

            CheckBoxList1.DataSource = SqlDataSource1;
            CheckBoxList1.DataTextField = "RoleName";
            CheckBoxList1.DataValueField = "RoleCode";

if you want I upload my vs2005 solution that can help you more, if you want tell here
Edwin_CConnect With a Mentor Commented:
It is a known problem that the GroupName of radiobutton does not work in databound coontrols such as repeater.  You can use the GroupRadioButton control in to solve the problem.

The article also demonstrate how to read the value of the button.

Hope that helps
Hamed ZaghaghiProgrammerCommented:
1-i created a checkboxlist and bind it to a table
2-handle checkboxlist DataBound event:

    protected void CheckBoxList1_DataBound(object sender, EventArgs e)
        int listItemIndex = 0;
        foreach (ListItem li in CheckBoxList1.Items)
            string script = "clearall('" + CheckBoxList1.ClientID +"',"+
            li.Attributes.Add("onclick", script);

3-add this script aspx
this script uncheck all items in a checkboxlist except one that its index is in 2nd parameter

<script language="javascript">
function clearall(checkBoxListId, chk)
    objCtrl = document.getElementById(checkBoxListId);
    if(objCtrl == null)

    var i = 0;
    var objItem = null;

    for(i = 0; document.getElementById(checkBoxListId + '_' + i) != null; i++)
        objItem = document.getElementById(checkBoxListId + '_' + i);

              objItem.checked = false;
Never miss a deadline with

The revolutionary project management tool is here!   Plan visually with a single glance and make sure your projects get done.

CollindsouzaAuthor Commented:
Hi zaghaghi

Thank you for your reply..

Could you tell me how can i... created a checkboxlist and bind it to a table

Thanks in advance

Hamed ZaghaghiProgrammerCommented:
Oops I forget that set Datamember

            CheckBoxList1.DataMember = "tablename";
            CheckBoxList1.DataSource = SqlDataSource1;
            CheckBoxList1.DataTextField = "RoleName";
            CheckBoxList1.DataValueField = "RoleCode";
Allowing user to select only one choice from a number of choices is the typical function of radio button.  Why bother to create a checkbox list that resemble the function of radiobutton list?  
CollindsouzaAuthor Commented:
Hi Zaghaghi,

I have taken the following steps to resolve this issue..

First :- i have selected a radio button so the user can select only one option at a time..

Second :- i set the value of the radio button as follows

 <input id="rbSelected" type="radio" value='<%# DataBinder.Eval(Container.DataItem,"ContactID") %>' runat="server" />

This value the Radio button has the respective ID..

Third :- on click of select button at the bottom of the page i loop through the repeater control and find out which radio button is checked  
   protected void btnSelect_Click(object sender, EventArgs e)
        for (int i = 0; i < rptDetails.Items.Count; i++)
            if (((HtmlInputRadioButton)rptDetails.Items[i].FindControl("rbSelected")).Checked == true)
                string ContactID = ((HtmlInputRadioButton)rptDetails.Items[i].FindControl("rbSelected")).Value;


Now.. so far so good...

Since all of this operation is happening on the pop up screen...

what i want to do now is when the looping is complete in  btnSelect_Click event... I want to refresh the parent page by passing the contactID as part of the query string.. meaning..
1). I now want to Close this pop up screen and i want to pass this contactID whicih i found through looping the repeater control.. to the parent window..
2). Currently the Parent url is...


i want the parent url to be http://localhost/IP/AddNewIP.aspx?ContactID='8386'

How can i achive this through the code behind btnSelect_Click
Please help
All Courses

From novice to tech pro — start learning today.