• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1905
  • Last Modified:

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!!!
0
Collindsouza
Asked:
Collindsouza
  • 3
  • 2
  • 2
2 Solutions
 
Edwin_CCommented:
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
 
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
Cloud Class® Course: SQL Server Core 2016

This course will introduce you to SQL Server Core 2016, as well as teach you about SSMS, data tools, installation, server configuration, using Management Studio, and writing and executing queries.

 
Hamed ZaghaghiProgrammerCommented:
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
 
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
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Cloud Class® Course: CompTIA Cloud+

The CompTIA Cloud+ Basic training course will teach you about cloud concepts and models, data storage, networking, and network infrastructure.

  • 3
  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now