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" >
                                <ItemTemplate>
                                    <tr>
                                        <td width="1%">
                                            <itemtemplate>
                                                <input id="chkSelected" type="checkbox" value="<%#Container.DataItem("ContactID")%>" name="ItemID" runat="server" />
                        </itemtemplate>
                                        </td>
                                    </tr>
                                    <tr>
                                         <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!!!
LVL 5
CollindsouzaAsked:
Who is Participating?

[Webinar] Streamline your web hosting managementRegister Today

x
 
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";
            CheckBoxList1.DataBind();

if you want I upload my vs2005 solution that can help you more, if you want tell here
0
 
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 http://www.codeproject.com/aspnet/How_group_RButtons.asp to solve the problem.

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

Hope that helps
Edwin
0
 
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 +"',"+
                listItemIndex.ToString()+");";
            li.Attributes.Add("onclick", script);
            listItemIndex++;
        }
    }

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)
    {
        return;
    }

    var i = 0;
    var objItem = null;


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

      if(i!=chk)
              objItem.checked = false;
    }
}
</script>
0
Never miss a deadline with monday.com

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

Collin
0
 
Hamed ZaghaghiProgrammerCommented:
Oops I forget that set Datamember

            CheckBoxList1.DataMember = "tablename";
            CheckBoxList1.DataSource = SqlDataSource1;
            CheckBoxList1.DataTextField = "RoleName";
            CheckBoxList1.DataValueField = "RoleCode";
            CheckBoxList1.DataBind();
0
 
Edwin_CCommented:
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?  
0
 
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...

http://localhost/IP/AddNewIP.aspx

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
 
0
All Courses

From novice to tech pro — start learning today.