Hi,
I'm working for a client that needs to display a list of programs in a grid and have a list of sub-programs under each program. Those subprograms AKA locals need to have radio buttonlist, because the user can have the choice to select any options and update those options.
I have three datatables:
1. Program data
2. All locals
3. Userlocals
Please note that dt 2 & 3 need to be merged. In order for the selectedvalue in the radio buttonlist to be selected (represents a user selection).
I'd like to know how to accomplish this. This is what I have so far
HTML:
Here is what I have in the VB.NET code-behind
I've also attached a snapshot of what I'm trying to achieve.
Thanks,
I'm working for a client that needs to display a list of programs in a grid and have a list of sub-programs under each program. Those subprograms AKA locals need to have radio buttonlist, because the user can have the choice to select any options and update those options.
I have three datatables:
1. Program data
2. All locals
3. Userlocals
Please note that dt 2 & 3 need to be merged. In order for the selectedvalue in the radio buttonlist to be selected (represents a user selection).
I'd like to know how to accomplish this. This is what I have so far
HTML:
<telerik:RadGrid ID="rgMyGrid" runat="server" Skin="Office2007" AutoGenerateColumns="false"> <MasterTableView CommandItemDisplay="Top" ShowHeader="true"> <CommandItemTemplate> <div style="padding: 5px;"> Below is a listing of programs for the selected client. You can add this user to one or more programs by expanding the program node and selecting a localization. You must select at least one program/localization. </div> </CommandItemTemplate> <Columns> <telerik:GridBoundColumn DataField="ProgramName" HeaderText="Programs" /> <telerik:GridButtonColumn CommandName="Delete" Text="Remove" UniqueName="RemoveColumn" ButtonType="PushButton" /> </Columns> <NestedViewTemplate> <div style="width: 100%; padding-left: 10px;"> <asp:RadioButtonList runat="server" ID="rdoLocals"/> </div> </NestedViewTemplate> </MasterTableView> </telerik:RadGrid> <telerik:RadTreeView ID="rtvProgramsLocals" runat="server" Skin="Outlook" Visible="false"> </telerik:RadTreeView>Here is what I have in the VB.NET code-behind
If Not IsPostBack Then rgMyGrid.DataSource = LoadPrograms(100) rgMyGrid.DataBind() End If Private Function LoadPrograms(ByVal ClientId As Integer) As DataTable 'Dim p360programs As Programs = Nothing Dim programsDT As New DataTable("Programs") Dim localsDT As New DataTable("Locals") Dim userLocalDT As New DataTable("UserLocal") Dim localOptions As RadioButtonList 'p360programs = New Programs(ConfigurationManager.ConnectionStrings("P360ConnectionString").ConnectionString) Dim i As Integer Dim j As Integer Dim programNode As RadTreeNode Dim localNode As RadTreeNode programsDT.Columns.Add("ProgramID", GetType(Int32)) programsDT.Columns.Add("ClientID", GetType(Int32)) programsDT.Columns.Add("UserID", GetType(Int32)) programsDT.Columns.Add("ProgramName", GetType([String])) programsDT.PrimaryKey = New DataColumn() {programsDT.Columns("ProgramID")} programsDT.Rows.Add(New Object() {100, 100, 7628, "Internal Administration"}) programsDT.Rows.Add(New Object() {106, 100, 7628, "TestProgram"}) programsDT.Rows.Add(New Object() {107, 100, 7628, "TestProgram1"}) programsDT.AcceptChanges() localsDT.Columns.Add("LocalizationID", GetType(Int32)) localsDT.Columns.Add("ProgramID", GetType(Int32)) localsDT.Columns.Add("LocalizationName", GetType([String])) localsDT.PrimaryKey = New DataColumn() {localsDT.Columns("LocalizationID")} localsDT.Rows.Add(New Object() {100, 100, "Setup Tool"}) localsDT.Rows.Add(New Object() {105, 106, "MyLocal"}) localsDT.Rows.Add(New Object() {106, 106, "MyLocal2"}) localsDT.Rows.Add(New Object() {107, 107, "Local1a"}) localsDT.AcceptChanges() userLocalDT.Columns.Add("LocalizationID", GetType(Int32)) userLocalDT.Columns.Add("LocalizationName", GetType([String])) userLocalDT.PrimaryKey = New DataColumn() {userLocalDT.Columns("LocalizationID")} userLocalDT.Rows.Add(New Object() {100, "Setup Tool"}) userLocalDT.Rows.Add(New Object() {105, "MyLocal From the secondary Table"}) userLocalDT.AcceptChanges() 'programsDT = p360programs.GetPrograms(ClientId) If programsDT.Rows.Count > 0 Then For i = 0 To programsDT.Rows.Count - 1 If localsDT.Rows.Count > 0 Then localsDT.Merge(userLocalDT, False, MissingSchemaAction.Ignore) localOptions = New RadioButtonList Dim gridRow As GridDataItem For Each gridRow In rgMyGrid.MasterTableView.Items localOptions = CType(gridRow.ChildItem.FindControl("rdoLocals"), RadioButtonList) For j = 0 To userLocalDT.Rows.Count - 1 localOptions.Items.Add(New ListItem(localsDT(j)("LocalizationName"), localsDT(j)("LocalizationID"))) Next ' add the radio button to the localization radtree node localNode = New RadTreeNode() localNode.Controls.Add(localOptions) ' add the localization node to the program node programNode = New RadTreeNode(programsDT.Rows(i)("ProgramName")) programNode.Nodes.Add(localNode) ' add the program node to the tree view control rtvProgramsLocals.Nodes.Add(programNode) Next End If Next End If Return programsDT End FunctionI've also attached a snapshot of what I'm trying to achieve.
Thanks,