Hi,
I would like to drop items from a listbox into automatically generated textboxes.
when I use "tbxTester" it works very well but not with dynamic textboxes.
Thank you for your help
Droped ():System.MissingMemberException: The public member 'text' of type 'Object' was not found. to Microsoft.VisualBasic.CompilerServices.Symbols.Container.GetMembers (String & MemberName, Boolean ReportErrors) to Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateSet (Object Instance, Type Type, String MemberName, Object [] Arguments, String [] ArgumentNames, Type [] TypeArguments, Boolean OptimisticSet, Boolean RValueBase, CallType CallType) to Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateSet (Object Instance, Type Type, String MemberName, Object [] Arguments, String [] ArgumentNames, Type [] TypeArguments) to Page_Telerik .lbxItems_Dropped (Object sender, RadListBoxDroppedEventArgs e) in \TelerikDemoStandAlone.aspx.vb: line 88
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="TelerikDemoStandAlone.aspx.vb" Inherits="Page_TelerikDemoStandAlone" %><!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml" lang="fr-fr"><head runat="server" lang="fr-fr"> <meta name="robots" content="noindex,nofollow" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" lang="fr" /> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" /> <link href="/css/coreCss.css" rel="stylesheet" type="text/css" /></head><body> <form id="FormMain" runat="server" lang="fr-fr"> <telerik:RadScriptManager ID="rsm" runat="server" /> <main> <section> <article class="container full home"> <div class="row"> <asp:Panel ID="pnlMain" CssClass="col-xs-12 col-h" runat="server"> <telerik:RadAjaxPanel ID="ajaxPanel1" runat="server"> <div class="col-xs-12 col-md-12 col-h"> <telerik:RadComboBox ID="cbxSizeBox" AutoPostBack="true" Width="100%" Filter="Contains" Skin="MetroTouch" RenderMode="Lightweight" runat="server" /> </div> </telerik:RadAjaxPanel> <telerik:RadAjaxPanel ID="ajaxPanel2" runat="server"> <div class="col-xs-12 col-md-2 col-h"> <div class="col-lng"> <h2>Items</h2> <asp:Panel ID="pnlItems" CssClass="col-xs-12 col-h" runat="server"> <telerik:RadListBox ID="lbxItems" Width="100%" Height="500px" SelectionMode="Multiple" AllowTransfer="true" AutoPostBackOnTransfer="true" AutoPostBack="true" AllowReorder="true" AutoPostBackOnReorder="true" EnableDragAndDrop="true" ButtonSettings-ShowDelete="false" ButtonSettings-ShowReorder="false" ButtonSettings-ShowTransfer="false" ButtonSettings-ShowTransferAl="false" ButtonSettings-ShowTransferAll="false" OnDropped="lbxItems_Dropped" Skin="MetroTouch" RenderMode="Lightweight" runat="server" /> </asp:Panel> </div> </div> </telerik:RadAjaxPanel> <telerik:RadAjaxPanel ID="ajaxPanel3" runat="server"> <div class="col-xs-12 col-md-10 col-h"> <div class="col-lng"> <h2>Boxes</h2> <telerik:RadTextBox ID="tbxTester" Text="TextBox tester ..." runat="server" /> <asp:Panel ID="pnlMaper" CssClass="col-xs-12 col-h" runat="server" /> </div> </div> </telerik:RadAjaxPanel> <telerik:RadAjaxPanel ID="ajaxPanel0" runat="server"> <div class="col-xs-12 col-h" style="max-height: 400px; overflow-y: scroll;"> <asp:Label ID="litDebug" ForeColor="red" runat="server" /> </div> </telerik:RadAjaxPanel> <telerik:RadAjaxPanel ID="RadAjaxPanel1" runat="server"> <div class="col-xs-12 col-h" style="max-height: 400px; overflow-y: scroll;"> <asp:Literal ID="litRslt" runat="server" /> </div> </telerik:RadAjaxPanel> <div class="col-xs-12 col-h text-center"> <telerik:RadButton ID="btnSubmit" AutoPostBack="true" Text="save" Skin="BlackMetroTouch" Icon-PrimaryIconCssClass="rbSave" RenderMode="Lightweight" runat="server" /> </div> </asp:Panel> </div> </article> </section> </main> <telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server" Width="256px" Height="64px"> <asp:Label ID="AjaxLoadingPanelLabel" runat="server" ForeColor="Orange" Text="Loading..." /><br /> <asp:Image ID="AjaxLoadingPanelImage" runat="server" Width="224px" Height="48px" ImageUrl="~/img/Loading.gif" /> </telerik:RadAjaxLoadingPanel> <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server"> <AjaxSettings> <telerik:AjaxSetting AjaxControlID="lbxItems"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="lbxItems" LoadingPanelID="RadAjaxLoadingPanel1" /> <telerik:AjaxUpdatedControl ControlID="tbxTester" LoadingPanelID="RadAjaxLoadingPanel1" /> <telerik:AjaxUpdatedControl ControlID="litDebug" LoadingPanelID="RadAjaxLoadingPanel1" /> </UpdatedControls> </telerik:AjaxSetting> <telerik:AjaxSetting AjaxControlID="cbxSizeBox"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="pnlMaper" LoadingPanelID="RadAjaxLoadingPanel1" /> <telerik:AjaxUpdatedControl ControlID="litRslt" LoadingPanelID="RadAjaxLoadingPanel1" /> <telerik:AjaxUpdatedControl ControlID="litDebug" LoadingPanelID="RadAjaxLoadingPanel1" /> </UpdatedControls> </telerik:AjaxSetting> <telerik:AjaxSetting AjaxControlID="btnSubmit"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="litRslt" LoadingPanelID="RadAjaxLoadingPanel1" /> <telerik:AjaxUpdatedControl ControlID="litDebug" LoadingPanelID="RadAjaxLoadingPanel1" /> </UpdatedControls> </telerik:AjaxSetting> </AjaxSettings> </telerik:RadAjaxManager> </form></body></html>
Imports Telerik.Web.UIImports System.Web.UI.WebControlsImports System.DrawingImports System.LinqImports Newtonsoft.JsonPartial Class Page_TelerikDemoStandAlone Inherits System.Web.UI.Page Protected Sub Page_PreInit(sender As Object, e As EventArgs) Handles Me.PreInit End Sub Private Sub Page_Init(sender As Object, e As EventArgs) Handles Me.Init If Not IsPostBack Then ViewState("datasBag") = "" End If End Sub Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load If Not IsPostBack Then lbxItems_GatDatas() cbxSizeBox_GatDatas() End If End Sub ' lbxItems /////////////////////////////////////////////////////////// Private Sub lbxItems_GatDatas() lbxItems.Items.Clear() lbxItems.ClearSelection() Dim isa As New itemStandAlone Try If isa.getItems() Then Dim itemValue As String = "", itemText As String = "", itemTooltip As String = "", itemEnabled As Boolean = False For i As Integer = 0 To isa.DT.Rows.Count - 1 Dim idI As Integer = CInt(isa.DT.Rows(i)("id")) Dim titleI As String = Trim(isa.DT.Rows(i)("label").ToString() & "") Dim valueI As String = Trim(isa.DT.Rows(i)("value").ToString() & "") itemValue = valueI itemText = titleI itemEnabled = True itemTooltip = idI & ";" & titleI & ";" & valueI & ";" Dim rlbi As New RadListBoxItem rlbi.Value = itemValue rlbi.Text = itemText rlbi.ToolTip = itemTooltip rlbi.Enabled = itemEnabled lbxItems.Items.Add(rlbi) rlbi = Nothing Next lbxItems.Enabled = True Else lbxItems.Enabled = False litDebug.Text &= "itemStandAlone.getItems() : no items" End If Catch ex As Exception lbxItems.Enabled = False litDebug.Text &= ex.ToString() End Try 'isa.Dispose() isa = Nothing End Sub Protected Sub lbxItems_Dropped(ByVal sender As Object, ByVal e As RadListBoxDroppedEventArgs) Dim debug As String = "" Dim datasTxt As String = "", emptyTxt As String = "", errorTxt As String = "error" Dim selectedCtrl As New Object Try For Each item As RadListBoxItem In e.SourceDragItems If item.Value.ToString <> "" Then datasTxt = item.Value.ToString End If Next If (TypeOf pnlMaper.FindControl(e.HtmlElementID) Is Telerik.Web.UI.RadTextBox) Then selectedCtrl = DirectCast(pnlMaper.FindControl(e.HtmlElementID), Telerik.Web.UI.RadTextBox) ElseIf tbxTester.ClientID = e.HtmlElementID Then selectedCtrl = DirectCast(tbxTester, Telerik.Web.UI.RadTextBox) End If If (datasTxt <> "") Then If selectedCtrl IsNot Nothing Then selectedCtrl.Text = datasTxt Else debug &= "selectedCtrl Is Nothing !!! <br/>" debug &= "pnlMaper.FindControl(e.HtmlElementID).ClientID : " & pnlMaper.FindControl(e.HtmlElementID).ClientID.ToString & "<br/>" End If Else debug &= "datasTxt Is empty !!! <br/>" End If Catch ex As Exception debug &= "Droped() : <br/>" & ex.ToString & "<br/>" End Try litDebug.Text &= debug End Sub ' cbxSizeBox /////////////////////////////////////////////////////////// Private Sub cbxSizeBox_GatDatas() cbxSizeBox.EmptyMessage = "Select your size ..." cbxSizeBox.Items.Insert(0, New RadComboBoxItem("4", 4)) cbxSizeBox.Items.Insert(1, New RadComboBoxItem("8", 8)) cbxSizeBox.Items.Insert(2, New RadComboBoxItem("12", 12)) End Sub ' GenerateMaper /////////////////////////////////////////////////////////// Private Sub GenerateMaper(x As Integer, y As Integer) Dim gTxt As Telerik.Web.UI.RadTextBox Try pnlMaper.Controls.Add(New LiteralControl("<table id='gridBoxes' cellspacing='0' cellpadding='0'>")) For i = 1 To x pnlMaper.Controls.Add(New LiteralControl("<tr>")) For j = 1 To y pnlMaper.Controls.Add(New LiteralControl("<td>")) gTxt = New Telerik.Web.UI.RadTextBox gTxt.ID = "boxCase_" & i.ToString & "x" & j.ToString gTxt.Attributes.Add("datas-positions-x", i) gTxt.Attributes.Add("datas-positions-y", j) gTxt.Attributes.Add("datas-value", 0) pnlMaper.Controls.Add(gTxt) controlBag.Add(gTxt.ID.ToString, gTxt) pnlMaper.Controls.Add(New LiteralControl("</td>")) Next pnlMaper.Controls.Add(New LiteralControl("</tr>")) Next pnlMaper.Controls.Add(New LiteralControl("</table>")) SetDatasBag_ViewState() Catch ex As Exception litDebug.Text = ex.ToString() End Try End Sub ' datasbag /////////////////////////////////////////////////////////// Protected controlBag As New Dictionary(Of String, Control) Private Function GetDatasBag() As String Dim output As String = "" Try If ViewState("datasBag") IsNot Nothing Then output = ViewState("datasBag") End If Catch ex As Exception output &= ex.ToString & "<br/>" End Try Return output End Function Private Function SetDatasBag_ViewState(Optional debug As Boolean = False) As Boolean Dim output As Boolean = False, outputDatas As String = "", _dbg As String = "" Try Dim dt As New DataTable dt.Columns.Add("id", GetType(Integer)) dt.Columns.Add("x", GetType(String)) dt.Columns.Add("y", GetType(String)) dt.Columns.Add("val", GetType(String)) Dim i As Integer = 0 For Each ctrl In controlBag i += 1 If TypeOf ctrl.Value Is Telerik.Web.UI.RadTextBox Then Dim gTxt As Telerik.Web.UI.RadTextBox = DirectCast(ctrl.Value, Telerik.Web.UI.RadTextBox) Dim x As String = gTxt.Attributes("datas-positions-x").ToString(), y As String = gTxt.Attributes("datas-positions-y").ToString(), val As String = gTxt.Attributes("datas-value").ToString() dt.Rows.Add(i, x, y, val) If (debug) Then _dbg &= "id:" & i & ";" _dbg &= "x:" & x & ";" _dbg &= "y:" & y & ";" _dbg &= "val:" & val & ";" _dbg &= "<br/>" End If End If Next outputDatas = JsonConvert.SerializeObject(dt) output = (outputDatas <> "") If (output) Then ViewState("datasBag") = outputDatas End If Catch ex As Exception _dbg &= ex.ToString & "<br/>" End Try If (_dbg <> "") Then litDebug.Text = "SetDatasBag_ViewState : " & _dbg End If Return output End Function ' controllers /////////////////////////////////////////////////////////// Protected Sub btnSubmit_Click(sender As Object, e As EventArgs) Handles btnSubmit.Click litRslt.Text = GetDatasBag() End Sub Private Sub cbxSizeBox_SelectedIndexChanged(sender As Object, e As RadComboBoxSelectedIndexChangedEventArgs) Handles cbxSizeBox.SelectedIndexChanged If (IsNumeric(e.Value)) Then GenerateMaper(e.Value, e.Value) End If End SubEnd Class' itemStandAlone //////////////////////////////////////////////////////Public Class itemStandAlone Implements IDisposable Public Sub Dispose() Implements IDisposable.Dispose DT.Clear() DT = Nothing GC.SuppressFinalize(Me) End Sub Public DT As New DataTable Public Function getItems() As Boolean Dim output As Boolean = False DT.Columns.Add("id", GetType(Integer)) DT.Columns.Add("label", GetType(String)) DT.Columns.Add("value", GetType(String)) For i = 1 To 24 DT.Rows.Add(i, "LABEL (" & i.ToString & ")", "V" & i.ToString) Next If DT.Rows.Count > 0 Then output = True End If Return output End FunctionEnd Class