This is a migrated thread and some comments may be shown as answers.

Listbox Dropped In Dynamic TextBox

0 Answers 47 Views
Ajax
This is a migrated thread and some comments may be shown as answers.
Nuwea
Top achievements
Rank 1
Nuwea asked on 18 Jun 2020, 12:29 AM

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.UI
Imports System.Web.UI.WebControls
Imports System.Drawing
Imports System.Linq
Imports Newtonsoft.Json
 
Partial 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 Sub
 
End 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 Function
End Class

 

 

No answers yet. Maybe you can help?

Tags
Ajax
Asked by
Nuwea
Top achievements
Rank 1
Share this question
or