Click here to Skip to main content
15,880,956 members
Articles / Web Development / HTML
Article

A simple RadioButtonList in a Web DataGrid Column

Rate me:
Please Sign up or sign in to vote.
4.09/5 (22 votes)
23 Aug 2004Ms-RL 141.4K   3K   36   10
A very simple and practical way, how a single RadioButton acts as a RadioButtonList in a web DataGrid server control column.

Introduction

This article exposes, in a very simple and practical way, how a single RadioButton acts as a RadioButtonList in a web DataGrid server control column. It’s nothing about two thousand lines of code, nor custom control, neither signed assembly. I always wonder why do complicated when we can do simple.

Solution

First, in the ItemCreated DataGrid event, I’ll wire the RadioButton CheckedChanged event:

C#
private void DataGrid1_ItemCreated(object sender, 
   System.Web.UI.WebControls.DataGridItemEventArgs e)
{
   //Find the RadioButton control
   RadioButton oRb = ((RadioButton)e.Item.FindControl("rb"));             
   if(oRb != null)
   {                    
      //Wire the RadioButton's event
      oRb.CheckedChanged += new
         System.EventHandler(this.rb_CheckedChanged);
   }
}

Second, in the RadioButton CheckedChanged event, I’ll loop through DataGrid items to find the previous and current radio buttons and, if found, the previously checked button will be unchecked:

C#
private void rb_CheckedChanged(object sender, System.EventArgs e)
{
   //Find the current selected RadioButton
   RadioButton oRb1 = (RadioButton)sender;

   foreach(DataGridItem oItem in DataGrid1.Items)
   {                
      //Find the previous selected RadioButton
      RadioButton oRb2 = (RadioButton)oItem.FindControl("rb");

      //Display info for the current selected button
      if( oRb2.Equals(oRb1) )
      {                    
         Message.Text = 
            String.Format("Selected Id is: {0}, 
                         and the Description is:{1}",
                         ((Label)oItem.FindControl("lblId")).Text,
                         ((Label)oItem.FindControl("lblDesc")).Text);
      }
       //Uncheck previously selected button
       else 
          oRb2.Checked = false;
   }
}

The info is displayed in a message label after I’ve recuperated the lblId and lblDesc text from the HTML web form, like in the code below:

ASP.NET
<asp:label id="Message" Runat="server"></asp:label>
...
<Columns>
   <asp:TemplateColumn HeaderText="Id">
      <ItemTemplate>
         <asp:Label id="lblId" runat="server" Text='<%# 
            DataBinder.Eval(Container.DataItem, "Id") %>' />
      </ItemTemplate>
   </asp:TemplateColumn>

   <asp:TemplateColumn HeaderText="Description">
      <ItemTemplate>
         <asp:Label id="lblDesc" runat="server" Text='<%# 
            DataBinder.Eval(Container.DataItem,"Description") %>' />
      </ItemTemplate>
   </asp:TemplateColumn>
... 
</Columns>
...

The DataGrid is bound to an ArrayList aList in the BindDataGrid():

C#
private void BindDataGrid()
{
   ArrayList aList = new ArrayList();
      
   for(int i=1; i<6; i++)
   {
      aList.Add(new ItemInfo(i, "Desc " + i.ToString()));
   } 

   //Binding and displaying the info in the DataGrid
   DataGrid1.DataSource = aList;
   DataGrid1.DataBind();
}

For more details, please download the source code above. You have nothing else to do than to create a new C# project for an ASP.NET application and add the source code files. That’s all about it.

Enjoy!

License

This article, along with any associated source code and files, is licensed under Microsoft Reciprocal License


Written By
Web Developer
Canada Canada
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
Generalthe same in detail datagrid Pin
asily31-Oct-05 12:22
asily31-Oct-05 12:22 
Generaldon't need to be this complicated... Pin
Anonymous19-Sep-05 16:04
Anonymous19-Sep-05 16:04 
GeneralDoesn't work as user control Pin
theredder10-Apr-05 17:58
theredder10-Apr-05 17:58 
GeneralRe: Doesn't work as user control Pin
Member 110256714-Apr-05 12:13
Member 110256714-Apr-05 12:13 
GeneralRe: Doesn't work as user control Pin
x_h1b_y3-Jul-06 12:57
x_h1b_y3-Jul-06 12:57 
GeneralWhy things are complicated Pin
seby17215729-Oct-04 0:40
seby17215729-Oct-04 0:40 
GeneralRe: Why things are complicated Pin
Socrate19-Nov-04 8:16
Socrate19-Nov-04 8:16 
GeneralFor VB.NET Pin
culithay26-Aug-04 17:21
culithay26-Aug-04 17:21 
GeneralRe: For VB.NET Pin
Socrate127-Aug-04 3:14
Socrate127-Aug-04 3:14 
QuestionHow to Convert this Source into Vb.NET Pin
culithay26-Aug-04 16:44
culithay26-Aug-04 16:44 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.