Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > ASP .Net > RadioButtonList in a DataGrid

Reply
Thread Tools

RadioButtonList in a DataGrid

 
 
DotNetGruven
Guest
Posts: n/a
 
      01-24-2004
Anyone have any pointers on how to set the Value and Selected attributes in
a ListItem in a RadioButtonList that is in a DataGrid?

Here's what I have
------DataGrid------
-- BoundColumn 0 --
-- BoundColumn 1 --
-- BoundColumn 2 --
-- TemplateColumn 4 --
-- RadioButtonList --
ListItem 0 // need to set the Value and Selected attributes from
DataSet Bound to DataGrid

TIA,
George


 
Reply With Quote
 
 
 
 
DotNetGruven
Guest
Posts: n/a
 
      01-24-2004
Oh, and this is the error message I'm getting:

Compiler Error Message: CS0117: 'System.Web.UI.WebControls.ListItem' does
not contain a definition for 'DataBinding'

-g

"DotNetGruven" <(E-Mail Removed)> wrote in message
news:%(E-Mail Removed)...
> Anyone have any pointers on how to set the Value and Selected attributes

in
> a ListItem in a RadioButtonList that is in a DataGrid?
>
> Here's what I have
> ------DataGrid------
> -- BoundColumn 0 --
> -- BoundColumn 1 --
> -- BoundColumn 2 --
> -- TemplateColumn 4 --
> -- RadioButtonList --
> ListItem 0 // need to set the Value and Selected attributes

from
> DataSet Bound to DataGrid
>
> TIA,
> George
>
>



 
Reply With Quote
 
 
 
 
Ruprict
Guest
Posts: n/a
 
      01-24-2004
You should be able to DataBind to the List, but not the List Item.

If you want to just set the value on the ListItem, give the
RadioButtonList an id (i.e., rblList) and code the OnDataBindingEvent
for the DataGrid something like:

//set list item
RadioButtonList myList = (RadioButtonList) e.Item.FindControl("rblList");
myList.Items[0].Value = <value>;
myList.Items[0].Selected=true/false;

OR
//Bind radiobuttonlist
RadioButtonList myList = (RadioButtonList) e.Item.FindControl("rblList");
myList.DataSource = yourSource;
myList.DataBind();

Hope this helps


DotNetGruven wrote:

> Oh, and this is the error message I'm getting:
>
> Compiler Error Message: CS0117: 'System.Web.UI.WebControls.ListItem' does
> not contain a definition for 'DataBinding'
>
> -g
>
> "DotNetGruven" <(E-Mail Removed)> wrote in message
> news:%(E-Mail Removed)...
>
>>Anyone have any pointers on how to set the Value and Selected attributes

>
> in
>
>>a ListItem in a RadioButtonList that is in a DataGrid?
>>
>>Here's what I have
>>------DataGrid------
>> -- BoundColumn 0 --
>> -- BoundColumn 1 --
>> -- BoundColumn 2 --
>> -- TemplateColumn 4 --
>> -- RadioButtonList --
>> ListItem 0 // need to set the Value and Selected attributes

>
> from
>
>>DataSet Bound to DataGrid
>>
>>TIA,
>>George
>>
>>

>
>
>

 
Reply With Quote
 
Steven Cheng[MSFT]
Guest
Posts: n/a
 
      01-26-2004
Hi George,


Thanks for posting in the community! My name is Steven, and I'll be
assisting you on this issue.
From your description, you has a DataGrid which contains a template column
with a radiobuttonlist in it.
Also you want to set the radionbuttonlist 's item value and select
attribute at runtime during
the time when DataGrid's column is being bind to the data retrieved from
database, yes?
If there is anything I misunderstood, please feel free to let me know.


As for this problem, I think we can use the DataGrid's DataItemBound event
to implement our requirement. In the DataItemBound event, we can retrieve
the certain row which is currently being bund with datas from the
DataSource. Also, we can retrieve the certain row of DataSource. For our
siutation, we want to do some modification on the radiobuttonlist in the
template collumn, we can first retrieve the RadioButtonList control from
the column using "FindControl" and then do operations on it. For example:

private void dgMain_ItemDataBound(object sender,
System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType ==
ListItemType.AlternatingItem)
{
DataRowView drv = (DataRowView)e.Item.DataItem;
System.Web.UI.WebControls.RadioButtonList lst =
(System.Web.UI.WebControls.RadioButtonList)e.Item. Cells[2].FindControl("rblB
ind");
lst.Items[0].Text = drv["grade"].ToString();
lst.Items[0].Value = drv["grade"].ToString();
lst.SelectedIndex = 0;
}
}

#dgMain is the DataGrid in a page

To make such approach clearly, here is a sample page I've made, you can
refer to it if you have anything unclear in my above description:
---------------------------------aspx page----------------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>RadioButtonList</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema"
content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body>
<form id="Form1" method="post" runat="server">
<table width="500" align="center">
<tr>
<td>
<aspataGrid id="dgMain" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:BoundColumn DataField="index"
HeaderText="ID"></asp:BoundColumn>
<asp:BoundColumn DataField="name"
HeaderText="Name"></asp:BoundColumn>
<asp:TemplateColumn HeaderText="BoundList">
<ItemTemplate>
<asp:RadioButtonList id="rblBind" runat="server">
<asp:ListItem Value="BindItem">BindItem</asp:ListItem>
<asp:ListItem Value="ItemA">ItemA</asp:ListItem>
<asp:ListItem Value="ItemB">ItemB</asp:ListItem>
<asp:ListItem Value="ItemC">ItemC</asp:ListItem>
</asp:RadioButtonList>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</aspataGrid>
</td>
</tr>
<tr>
<td></td>
</tr>
</table>
</form>
</body>
</HTML>

-----------------------------code behind page class------------------
public class RadioButtonList : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataGrid dgMain;

private void Page_Load(object sender, System.EventArgs e)
{
// Put user code to initialize the page here
if(!IsPostBack)
{
BindGrid();
}
}

protected void BindGrid()
{


DataTable tb = new DataTable();
tb.Columns.Add("index");
tb.Columns.Add("name");
tb.Columns.Add("grade");

for(int i=0;i<15;i++)
{
int index = i+1;
DataRow newrow = tb.NewRow();
newrow["index"] = index.ToString();
newrow["name"] = "name" + index.ToString();


switch(index%3)
{
case 0:
newrow["grade"] = "low";
break;
case 1:
newrow["grade"] = "normal";
break;
case 2:
newrow["grade"] = "high";
break;
}

tb.Rows.Add(newrow);
}

dgMain.DataSource = tb;
dgMain.DataBind();

}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.dgMain.ItemDataBound += new
System.Web.UI.WebControls.DataGridItemEventHandler (this.dgMain_ItemDataBound
);
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion

private void dgMain_ItemDataBound(object sender,
System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType ==
ListItemType.AlternatingItem)
{
DataRowView drv = (DataRowView)e.Item.DataItem;
System.Web.UI.WebControls.RadioButtonList lst =
(System.Web.UI.WebControls.RadioButtonList)e.Item. Cells[2].FindControl("rblB
ind");
lst.Items[0].Text = drv["grade"].ToString();
lst.Items[0].Value = drv["grade"].ToString();
lst.SelectedIndex = 0;

}
}
}
----------------------------------------------------------------------------
-------------------------

If you have any further questions, please feel free to post here.


Regards,

Steven Cheng
Microsoft Online Support

Get Secure! www.microsoft.com/security
(This posting is provided "AS IS", with no warranties, and confers no
rights.)


 
Reply With Quote
 
DotNetGruven
Guest
Posts: n/a
 
      01-27-2004
Thanks Ruprict, your help below set me down the right path to the answer. Here is what worked:

public void OnItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
ListItemType listItemType = e.Item.ItemType;
if ( listItemType == ListItemType.AlternatingItem || listItemType == ListItemType.Item )
{
TableCell cell;
cell = (TableCell) e.Item.Cells[5];
if ( cell.Controls[1]is RadioButtonList && e.Item.DataItem is DataRowView )
{
RadioButtonList rbl = (RadioButtonList)cell.Controls[1];
DataRowView dr = (DataRowView)e.Item.DataItem;
rbl.Items[0].Selected = Convert.ToBoolean(dr.Row.ItemArray[5]);
rbl.Items[1].Selected = !rbl.Items[0].Selected;
rbl.Items[0].Value = rbl.Items[1].Value = dr.Row.ItemArray[0].ToString();
}
}
}

"Ruprict" <(E-Mail Removed)> wrote in message news:cTtQb.4926$(E-Mail Removed)...
> You should be able to DataBind to the List, but not the List Item.
>
> If you want to just set the value on the ListItem, give the
> RadioButtonList an id (i.e., rblList) and code the OnDataBindingEvent
> for the DataGrid something like:
>
> //set list item
> RadioButtonList myList = (RadioButtonList) e.Item.FindControl("rblList");
> myList.Items[0].Value = <value>;
> myList.Items[0].Selected=true/false;
>
> OR
> //Bind radiobuttonlist
> RadioButtonList myList = (RadioButtonList) e.Item.FindControl("rblList");
> myList.DataSource = yourSource;
> myList.DataBind();
>
> Hope this helps
>
>
> DotNetGruven wrote:
>
> > Oh, and this is the error message I'm getting:
> >
> > Compiler Error Message: CS0117: 'System.Web.UI.WebControls.ListItem' does
> > not contain a definition for 'DataBinding'
> >
> > -g
> >
> > "DotNetGruven" <(E-Mail Removed)> wrote in message
> > news:%(E-Mail Removed)...
> >
> >>Anyone have any pointers on how to set the Value and Selected attributes

> >
> > in
> >
> >>a ListItem in a RadioButtonList that is in a DataGrid?
> >>
> >>Here's what I have
> >>------DataGrid------
> >> -- BoundColumn 0 --
> >> -- BoundColumn 1 --
> >> -- BoundColumn 2 --
> >> -- TemplateColumn 4 --
> >> -- RadioButtonList --
> >> ListItem 0 // need to set the Value and Selected attributes

> >
> > from
> >
> >>DataSet Bound to DataGrid
> >>
> >>TIA,
> >>George
> >>
> >>

> >
> >
> >

 
Reply With Quote
 
Steven Cheng[MSFT]
Guest
Posts: n/a
 
      01-28-2004
Hi George,


Thanks for your followup. I'm glad that the problem has been resolved. In
the meantime, if you have any further questions or need any further help,
please feel free to let me know.


Regards,

Steven Cheng
Microsoft Online Support

Get Secure! www.microsoft.com/security
(This posting is provided "AS IS", with no warranties, and confers no
rights.)


 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Radiobuttonlist events INSIDE a datagrid? Luis Esteban Valencia ASP .Net 0 01-05-2005 06:13 PM
How to bind DataGrid RadioButtonList's value? =?Utf-8?B?U2VyZw==?= ASP .Net 2 10-15-2004 06:15 PM
OnSelectedIndexChanged for a RadioButtonList in a DataGrid DotNetGruven ASP .Net 6 02-03-2004 03:58 PM
edit datagrid with radiobuttonlist Mike P ASP .Net 6 08-27-2003 02:45 PM
RadioButtonList in Nested DataGrid Problem Bob Hoke ASP .Net 0 07-11-2003 06:28 PM



Advertisments