Setting the SelectedIndex value of a RadioButtonList

E

Emil

Can somebody tell me what would be the syntax for having an if statement and
setting the selected index of a radiobuttonlist?
This is my first project using ASP.net and I use C#.
I have a repeater with like a table layout and in the last column I want to
have three radio buttons (for each row in repeater). The value of the radio
button should be calculated from a value from the dataset.
How can I do that? When I try to use a variable inside the <asp:listitem
..... runat=server/> tag I get an error saying that I cannnot use varibles in
a server control.
Sample code (it will be inside a table which I do no show in this sample,
for clarity)
<asp:repeater id="rptEstimates" runat="server">
<HeaderTemplate>............</HeaderTemplate>
<ItemTemplate>
<%#DataBinder.Eval(Container,"DataItem.ProjectName")%>
...here I have a few more bound columns

...here I want to have an if statement to check the value from the daset
and to set the selected index value of the radiobuttonlist
<script runat=server>
string val=(string)ds.Fields.Item["BidResponse"];
if(val.Equals("Y"){rb1.SelectedIndex=0;}
</script> (this does not work)

<asp:RadioButtonList id="rb1" SelectedIndex=selIndex Runat=server>
<asp:ListItem Value=Y>Yes</asp:ListItem>
<asp:ListItem Value=N>No</asp:ListItem>
<asp:ListItem Value=NR>Nr</asp:ListItem>
</asp:RadioButtonList>
</ItemTemplate>
</asp:reapeater>

thank you.
 
M

Martin Marinov

You can use
RadioButtonList.SelectedValue =(string)ds.Fields.Item["BidResponse"];
but you have to be sure that ds.Fields.Item["BidResponse"]; will return Y, N
or NR otherwise the application will throw ArgumentOutOfRangeException

Regards
Martin
 
E

Emil

OK, and where should I have this statement?
If i try<asp:RadioButtonList ID="rbl"
SelectedIndex=<%=(string)ds.Fields.Item["BidResponse"];%>
i get an error msg: Server tags cannot contain <% ... %> constructor.
If I use it befor to have the <asp:RadioButtonList> tag like,
<% rbl.SelectedIndex=(string)ds.Fields.Item["BidResponse"]; %> I get an
error:

Compiler Error Message: CS0246: The type or namespace name 'rbl' could not
be found (are you missing a using directive or an assembly reference?)

And besides that the field contains either "Y", "N", "NR" or nulls.
Anyway thank you for your response.


Martin Marinov said:
You can use
RadioButtonList.SelectedValue =(string)ds.Fields.Item["BidResponse"];
but you have to be sure that ds.Fields.Item["BidResponse"]; will return Y, N
or NR otherwise the application will throw ArgumentOutOfRangeException

Regards
Martin

Emil said:
Can somebody tell me what would be the syntax for having an if statement and
setting the selected index of a radiobuttonlist?
This is my first project using ASP.net and I use C#.
I have a repeater with like a table layout and in the last column I want to
have three radio buttons (for each row in repeater). The value of the radio
button should be calculated from a value from the dataset.
How can I do that? When I try to use a variable inside the <asp:listitem
.... runat=server/> tag I get an error saying that I cannnot use
varibles
in
a server control.
Sample code (it will be inside a table which I do no show in this sample,
for clarity)
<asp:repeater id="rptEstimates" runat="server">
<HeaderTemplate>............</HeaderTemplate>
<ItemTemplate>
<%#DataBinder.Eval(Container,"DataItem.ProjectName")%>
...here I have a few more bound columns

...here I want to have an if statement to check the value from the daset
and to set the selected index value of the radiobuttonlist
<script runat=server>
string val=(string)ds.Fields.Item["BidResponse"];
if(val.Equals("Y"){rb1.SelectedIndex=0;}
</script> (this does not work)

<asp:RadioButtonList id="rb1" SelectedIndex=selIndex Runat=server>
<asp:ListItem Value=Y>Yes</asp:ListItem>
<asp:ListItem Value=N>No</asp:ListItem>
<asp:ListItem Value=NR>Nr</asp:ListItem>
</asp:RadioButtonList>
</ItemTemplate>
</asp:reapeater>

thank you.
 
M

Martin Marinov

because the radiobuttonlist is a nested control you have to use
ItemDataBound event of the repeater control
you can use this :

<asp:repeater id="rptEstimates" runat="server" ItemDataBound="DataBoundItem>
....

<script runat="server">
void DataBoundItem(Object Sender, RepeaterItemEventArgs e) {

// This event is raised for the header, the footer, separators,
and items.

// Execute the following logic for Items and Alternating Items.
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType ==
ListItemType.AlternatingItem) {
RadioButtonList rbl =
(RadioButtonList)e.Item.FindControl("rptEstimates");
if ( rbl != null )
{
rbl.SelectedValue =
(string)((DataRow)e.Item.DataItem)["BidResponse"];
}
}
}

Regards,
Martin Marinov

</script>
Emil said:
OK, and where should I have this statement?
If i try<asp:RadioButtonList ID="rbl"
SelectedIndex=<%=(string)ds.Fields.Item["BidResponse"];%>
i get an error msg: Server tags cannot contain <% ... %> constructor.
If I use it befor to have the <asp:RadioButtonList> tag like,
<% rbl.SelectedIndex=(string)ds.Fields.Item["BidResponse"]; %> I get an
error:

Compiler Error Message: CS0246: The type or namespace name 'rbl' could not
be found (are you missing a using directive or an assembly reference?)

And besides that the field contains either "Y", "N", "NR" or nulls.
Anyway thank you for your response.


Martin Marinov said:
You can use
RadioButtonList.SelectedValue =(string)ds.Fields.Item["BidResponse"];
but you have to be sure that ds.Fields.Item["BidResponse"]; will return
Y,
N
or NR otherwise the application will throw ArgumentOutOfRangeException

Regards
Martin

Emil said:
Can somebody tell me what would be the syntax for having an if
statement
and
setting the selected index of a radiobuttonlist?
This is my first project using ASP.net and I use C#.
I have a repeater with like a table layout and in the last column I
want
to
have three radio buttons (for each row in repeater). The value of the radio
button should be calculated from a value from the dataset.
How can I do that? When I try to use a variable inside the <asp:listitem
.... runat=server/> tag I get an error saying that I cannnot use
varibles
in
a server control.
Sample code (it will be inside a table which I do no show in this sample,
for clarity)
<asp:repeater id="rptEstimates" runat="server">
<HeaderTemplate>............</HeaderTemplate>
<ItemTemplate>
<%#DataBinder.Eval(Container,"DataItem.ProjectName")%>
...here I have a few more bound columns

...here I want to have an if statement to check the value from the daset
and to set the selected index value of the radiobuttonlist
<script runat=server>
string val=(string)ds.Fields.Item["BidResponse"];
if(val.Equals("Y"){rb1.SelectedIndex=0;}
</script> (this does not work)

<asp:RadioButtonList id="rb1" SelectedIndex=selIndex Runat=server>
<asp:ListItem Value=Y>Yes</asp:ListItem>
<asp:ListItem Value=N>No</asp:ListItem>
<asp:ListItem Value=NR>Nr</asp:ListItem>
</asp:RadioButtonList>
</ItemTemplate>
</asp:reapeater>

thank you.
 
E

Emil

Thank you Martin,
based on your solution I did something that works.
public void rbl_OnItemDataBound(Object Sender, RepeaterItemEventArgs e){

if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.Alterna
tingItem){


RadioButtonList rbl=(RadioButtonList)e.Item.FindControl("rbl");


if(rbl !=null ){

//rbl.SelectedValue=(string)((DataRow)e.Item.DataItem)["BidResponse"];
//this statement issues an error

string bid="";

bid=(string)DataBinder.Eval(e.Item.DataItem,"BidResponse");

if(bid.Equals("Y")){rbl.SelectedIndex=0;}

if(bid.Equals("N")){rbl.SelectedIndex=1;}

if(bid.Equals("NR")){rbl.SelectedIndex=2;}




}}}


Martin Marinov said:
because the radiobuttonlist is a nested control you have to use
ItemDataBound event of the repeater control
you can use this :

<asp:repeater id="rptEstimates" runat="server" ItemDataBound="DataBoundItem>
...

<script runat="server">
void DataBoundItem(Object Sender, RepeaterItemEventArgs e) {

// This event is raised for the header, the footer, separators,
and items.

// Execute the following logic for Items and Alternating Items.
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType ==
ListItemType.AlternatingItem) {
RadioButtonList rbl =
(RadioButtonList)e.Item.FindControl("rptEstimates");
if ( rbl != null )
{
rbl.SelectedValue =
(string)((DataRow)e.Item.DataItem)["BidResponse"];
}
}
}

Regards,
Martin Marinov

</script>
Emil said:
OK, and where should I have this statement?
If i try<asp:RadioButtonList ID="rbl"
SelectedIndex=<%=(string)ds.Fields.Item["BidResponse"];%>
i get an error msg: Server tags cannot contain <% ... %> constructor.
If I use it befor to have the <asp:RadioButtonList> tag like,
<% rbl.SelectedIndex=(string)ds.Fields.Item["BidResponse"]; %> I get an
error:

Compiler Error Message: CS0246: The type or namespace name 'rbl' could not
be found (are you missing a using directive or an assembly reference?)

And besides that the field contains either "Y", "N", "NR" or nulls.
Anyway thank you for your response.


Martin Marinov said:
You can use
RadioButtonList.SelectedValue =(string)ds.Fields.Item["BidResponse"];
but you have to be sure that ds.Fields.Item["BidResponse"]; will
return
Y,
N
or NR otherwise the application will throw ArgumentOutOfRangeException

Regards
Martin

Can somebody tell me what would be the syntax for having an if statement
and
setting the selected index of a radiobuttonlist?
This is my first project using ASP.net and I use C#.
I have a repeater with like a table layout and in the last column I want
to
have three radio buttons (for each row in repeater). The value of the
radio
button should be calculated from a value from the dataset.
How can I do that? When I try to use a variable inside the <asp:listitem
.... runat=server/> tag I get an error saying that I cannnot use varibles
in
a server control.
Sample code (it will be inside a table which I do no show in this sample,
for clarity)
<asp:repeater id="rptEstimates" runat="server">
<HeaderTemplate>............</HeaderTemplate>
<ItemTemplate>
<%#DataBinder.Eval(Container,"DataItem.ProjectName")%>
...here I have a few more bound columns

...here I want to have an if statement to check the value from the daset
and to set the selected index value of the radiobuttonlist
<script runat=server>
string val=(string)ds.Fields.Item["BidResponse"];
if(val.Equals("Y"){rb1.SelectedIndex=0;}
</script> (this does not work)

<asp:RadioButtonList id="rb1" SelectedIndex=selIndex Runat=server>
<asp:ListItem Value=Y>Yes</asp:ListItem>
<asp:ListItem Value=N>No</asp:ListItem>
<asp:ListItem Value=NR>Nr</asp:ListItem>
</asp:RadioButtonList>
</ItemTemplate>
</asp:reapeater>

thank you.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,483
Members
44,902
Latest member
Elena68X5

Latest Threads

Top