RadioButtonList in a DataGrid

Discussion in 'ASP .Net' started by DotNetGruven, Jan 24, 2004.

  1. DotNetGruven

    DotNetGruven Guest

    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
     
    DotNetGruven, Jan 24, 2004
    #1
    1. Advertising

  2. DotNetGruven

    DotNetGruven Guest

    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" <> wrote in message
    news:%...
    > 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
    >
    >
     
    DotNetGruven, Jan 24, 2004
    #2
    1. Advertising

  3. DotNetGruven

    Ruprict Guest

    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" <> wrote in message
    > news:%...
    >
    >>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
    >>
    >>

    >
    >
    >
     
    Ruprict, Jan 24, 2004
    #3
  4. 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>
    <asp:DataGrid 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>
    </asp:DataGrid>
    </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.)
     
    Steven Cheng[MSFT], Jan 26, 2004
    #4
  5. DotNetGruven

    DotNetGruven Guest

    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" <> wrote in message news:cTtQb.4926$...
    > 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" <> wrote in message
    > > news:%...
    > >
    > >>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
    > >>
    > >>

    > >
    > >
    > >
     
    DotNetGruven, Jan 27, 2004
    #5
  6. 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.)
     
    Steven Cheng[MSFT], Jan 28, 2004
    #6
    1. Advertising

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

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Bob Hoke
    Replies:
    0
    Views:
    483
    Bob Hoke
    Jul 11, 2003
  2. Mike P

    edit datagrid with radiobuttonlist

    Mike P, Aug 27, 2003, in forum: ASP .Net
    Replies:
    6
    Views:
    425
    Mike P
    Aug 27, 2003
  3. DotNetGruven
    Replies:
    6
    Views:
    4,322
    DotNetGruven
    Feb 3, 2004
  4. =?Utf-8?B?U2VyZw==?=

    How to bind DataGrid RadioButtonList's value?

    =?Utf-8?B?U2VyZw==?=, Oct 15, 2004, in forum: ASP .Net
    Replies:
    2
    Views:
    6,559
    =?Utf-8?B?U2VyZw==?=
    Oct 15, 2004
  5. Luis Esteban Valencia

    Radiobuttonlist events INSIDE a datagrid?

    Luis Esteban Valencia, Jan 5, 2005, in forum: ASP .Net
    Replies:
    0
    Views:
    524
    Luis Esteban Valencia
    Jan 5, 2005
Loading...

Share This Page