Your Privacy Matters: We use our own and third-party cookies to improve your experience on our website. By continuing to use the website we understand that you accept their use. Cookie Policy
130
SelectedItems of a WebDropDown
posted

Hello,

I have a webform with a WebDropDown on it configured for checkbox multi-select based.  It functions fine when the web form is running (no javascript errors).  I am having difficulty accessing the selected items on server-side that were checked in the control.  

My aspx page markup is:

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="InfraTest.aspx.vb" Inherits="ReferralConnect.InfraTest" %>

<%@ Register assembly="Infragistics45.Web.v19.1, Version=19.1.20191.115, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb" namespace="Infragistics.Web.UI.ListControls" tagprefix="ig" %>

<!DOCTYPE html>

<html xmlns="">www.w3.org/.../xhtml">
<head runat="server">
<title></title>
</head>
<body>
<script type="text/javascript">

function selectedIndexChanging(sender, eventArgs) {
var oldItems = eventArgs.getOldSelection();
var newItems = eventArgs.getNewSelection();

var oldItemsString= "";
var newItemsString= "";

for (i = 0; i < oldItems.length; i++) {
if (oldItems[i] != null)
oldItemsString += oldItems[i].get_index() + ", ";
}

for (i = 0; i < newItems.length; i++)
newItemsString += newItems[i].get_index() + ", ";

addLine('<%= GetGlobalResourceObject("ddlServices", "MultiSelectionSelectionChanging") %>' + "(" + sender.get_name() + "): " + '<%= GetGlobalResourceObject("ddlServices", "MultiSelectionOldItems") %>' + " = [ " + oldItemsString + " ] ; " + '<%= GetGlobalResourceObject("ddlServices", "MultiSelectionNewItems") %>' + " = [ " + newItemsString + " ]; ");
}

function selectedIndexChanged(sender, eventArgs) {
var oldItems = eventArgs.getOldSelection();
var newItems = eventArgs.getNewSelection();

var oldItemsString= "";
var newItemsString= "";

for (i = 0; i < oldItems.length; i++) {
if (oldItems[i] != null)
oldItemsString += oldItems[i].get_index() + ", ";
}

for (i = 0; i < newItems.length; i++)
newItemsString += newItems[i].get_index() + ", ";

addLine('<%= GetGlobalResourceObject("ddlServices", "MultiSelectionSelectionChanged") %>'+
"(" + sender.get_name() + "): " + '<%= GetGlobalResourceObject("ddlServices", "MultiSelectionOldItems") %>' +
" = [ " + oldItemsString + " ] ; " + '<%= GetGlobalResourceObject("ddlServices", "MultiSelectionNewItems") %>' +
" = [ " + newItemsString + " ]; ");
}

</script>

<form id="form1" runat="server">
<div>
<%= GetGlobalResourceObject("ddlServices", "MultiSelectionCheckbox") %><br /><br /><ig:WebDropDown runat="server" ID="ddlServices" EnableClosingDropDownOnSelect="False" TextField="ServiceName" Width="400px" DropDownContainerHeight="300px" EnableMultipleSelection="True" Enabled="True" ViewStateMode="Inherit"><ClientEvents SelectionChanged="selectedIndexChanged" SelectionChanging="selectedIndexChanging" /></ig:WebDropDown>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>

<br />
<asp:Button ID="Button1" runat="server" Text="Button" />

</div>

</form>
</body>
</html>

My code behind (VB is):

Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports System.Data.SqlTypes
Imports System.IO

Public Class InfraTest
Inherits System.Web.UI.Page

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'Load Services into Dropdown.
  Dim SqlConnection1 As New SqlConnection(ConfigurationManager.ConnectionStrings("INSTANCE").ConnectionString) 
  Dim SQLString As String
  SQLString = "select ServiceName, ServiceID from ProviderServices where ProviderID = " + "'" + "1" + "'"
  SQLString = SQLString + " order by ServiceName"
  Dim dtSelected As DataTable

  Try
    Dim daSelected As SqlDataAdapter = New SqlDataAdapter(SQLString, SqlConnection1)
    dtSelected = New DataTable()
    daSelected.Fill(dtSelected)
    ddlServices.DataSource = dtSelected

  Catch ex As Exception
    Return
  End Try

End Sub

Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim S2 As String
S2 = ddlServices.SelectedItems(0).Text


Dim test As Integer
test = ddlServices.SelectedItems.Count

Dim wdd As Infragistics.Web.UI.ListControls.WebDropDown = DirectCast(Page.FindControl("ddlServices"), Infragistics.Web.UI.ListControls.WebDropDown)
Dim items As List(Of Infragistics.Web.UI.ListControls.DropDownItem) = wdd.SelectedItems
Dim cnt As Integer = 0
cnt = items.Count
Dim test1 As Integer
test1 = 0
End Sub
End Class

ddlServices.SelectedItems(0).Text throws an out of range exception even though some values in the dropdown list are checked.

ddlServices.SelectedItems.Count is equla to 0

The findcontrol method doesn't work eithor.

Perhaps I'm misunderstanding something.  I want to access the list of checked items so I can do some processing on them on the server side after a button is clicked.

My viewstate is enabled.

Any advice?