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

Index was out of range

1 Answer 72 Views
ListBox
This is a migrated thread and some comments may be shown as answers.
Roel
Top achievements
Rank 1
Roel asked on 13 Apr 2011, 08:33 AM

Hello,

I've places a Target-Source listbox on my User Registration form. Transferring items between de listboxes is no problem but when I commit the data with the Create User button I receive a 'Index was out of range' error.
Any idea?

See attached code.

<%@ Page Title="Register" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
    CodeBehind="Register.aspx.cs" Inherits="YBS.Account.Register" %>
  
<%@ Register assembly="Telerik.Web.UI" namespace="Telerik.Web.UI" tagprefix="telerik" %>
  
  
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <asp:CreateUserWizard ID="RegisterUser" runat="server" EnableViewState="False" 
        OnCreatedUser="RegisterUser_CreatedUser">
        <LayoutTemplate>
            <asp:PlaceHolder ID="wizardStepPlaceholder" runat="server"></asp:PlaceHolder>
            <asp:PlaceHolder ID="navigationPlaceholder" runat="server"></asp:PlaceHolder>
        </LayoutTemplate>
        <WizardSteps>
            <asp:CreateUserWizardStep ID="RegisterUserWizardStep" runat="server">
                <ContentTemplate>
                    <span class="failureNotification">
                        <asp:Literal ID="ErrorMessage" runat="server"></asp:Literal>
                    </span>
                    <asp:ValidationSummary ID="RegisterUserValidationSummary" runat="server" CssClass="failureNotification" 
                         ValidationGroup="RegisterUserValidationGroup"/>
                    <div class="accountInfo">
                        <fieldset class="register">
                            <legend><h2>Create a New Account</h2></legend>
                            <table runat="server" id="tblRegister" style="width:100%" border="0">
                              <tr>
                                <td align="right" style="width:125px"
                                  <asp:Label ID="NameLabel" runat="server" AssociatedControlID="tbName">Name:</asp:Label>
                                </td>
                                <td align="left">
                                  <asp:TextBox ID="tbName" runat="server" CssClass="textEntry"></asp:TextBox>
                                  <asp:RequiredFieldValidator ID="NameRequired" runat="server" ControlToValidate="tbName" 
                                       CssClass="failureNotification" ErrorMessage="Name is required." ToolTip="Name is required." 
                                       ValidationGroup="RegisterUserValidationGroup">*</asp:RequiredFieldValidator>
                                </td>
                              </tr>
                              <tr>
                                <td align="right" style="width:125px">
                                  <asp:Label ID="UserNameLabel" runat="server" AssociatedControlID="UserName">User Name:</asp:Label
                                </td>
                                <td align="left">
                                  <asp:TextBox ID="UserName" runat="server" CssClass="textEntry"></asp:TextBox>
                                  <asp:RequiredFieldValidator ID="UserNameRequired" runat="server" ControlToValidate="UserName" 
                                       CssClass="failureNotification" ErrorMessage="User Name is required." ToolTip="User Name is required." 
                                       ValidationGroup="RegisterUserValidationGroup">*</asp:RequiredFieldValidator>
                                </td>
                              </tr>
                              <tr>
                                <td align="right" style="width:125px"
                                  <asp:Label ID="EmailLabel" runat="server" AssociatedControlID="Email">E-mail:</asp:Label>
                                </td>
                                <td align="left">
                                  <asp:TextBox ID="Email" runat="server" CssClass="textEntry"></asp:TextBox>
                                  <asp:RequiredFieldValidator ID="EmailRequired" runat="server" ControlToValidate="Email" 
                                       CssClass="failureNotification" ErrorMessage="E-mail is required." ToolTip="E-mail is required." 
                                       ValidationGroup="RegisterUserValidationGroup">*</asp:RequiredFieldValidator>
                                </td>
                              </tr>
                              <tr>
                                <td align="right" style="width:125px">
                                  <asp:Label ID="PasswordLabel" runat="server" AssociatedControlID="Password">Password:</asp:Label
                                </td>
                                <td align="left">
                                  <asp:TextBox ID="Password" runat="server" CssClass="passwordEntry" TextMode="Password"></asp:TextBox>
                                  <asp:RequiredFieldValidator ID="PasswordRequired" runat="server" ControlToValidate="Password" 
                                       CssClass="failureNotification" ErrorMessage="Password is required." ToolTip="Password is required." 
                                       ValidationGroup="RegisterUserValidationGroup">*</asp:RequiredFieldValidator>
                                  <i>(Minimum of <%= Membership.MinRequiredPasswordLength %> characters required!)</i>
                                </td>
                              </tr>
                              <tr>
                                <td align="right" style="width:125px"
                                  <asp:Label ID="ConfirmPasswordLabel" runat="server" AssociatedControlID="ConfirmPassword">Confirm Password:</asp:Label>
                                </td>
                                <td align="left">
                                  <asp:TextBox ID="ConfirmPassword" runat="server" CssClass="passwordEntry" TextMode="Password"></asp:TextBox>
                                  <asp:RequiredFieldValidator ControlToValidate="ConfirmPassword" CssClass="failureNotification" Display="Dynamic" 
                                       ErrorMessage="Confirm Password is required." ID="ConfirmPasswordRequired" runat="server" 
                                       ToolTip="Confirm Password is required." ValidationGroup="RegisterUserValidationGroup">*</asp:RequiredFieldValidator>
                                  <asp:CompareValidator ID="PasswordCompare" runat="server" ControlToCompare="Password" ControlToValidate="ConfirmPassword" 
                                       CssClass="failureNotification" Display="Dynamic" ErrorMessage="The Password and Confirmation Password must match."
                                       ValidationGroup="RegisterUserValidationGroup">*</asp:CompareValidator>
                                </td>
                              </tr>
                              <tr>
                                <td align="right" style="width:125px">
                                </td>
                                <td align="left">
                                  <table id="tblCompany" runat="server">
                                    <tr>
                                      <td valign="top">
                                        <telerik:RadListBox ID="rlbSourceCompany" runat="server" Skin="Windows7" 
                                              AllowTransfer="True" TransferToID="rlbTargetCompany" Width="275px" Height="200px"
                                              DataKeyField="CompanyID" DataSourceID="SqlDSCompany" 
                                              DataTextField="Company">
                                          <HeaderTemplate>
                                            <center><asp:Label ID="lblSourceCompany" runat="server" Text="All companies" Font-Bold="true" /></center>
                                          </HeaderTemplate>
                                        </telerik:RadListBox>
                                      </td>
                                      <td valign="top">
                                        <telerik:RadListBox ID="rlbTargetCompany" runat="server" Skin="Windows7" Width="250px" Height="200px">
                                          <HeaderTemplate>
                                            <center><asp:Label ID="lblTargetCompany" runat="server" Text="Selected companies" Font-Bold="true" /></center>
                                          </HeaderTemplate>
                                        </telerik:RadListBox>
                                      </td>
                                    </tr>
                                  </table>
                                </td>
                              </tr>
                            </table>
                        </fieldset>
                        <p class="submitButton">
                            <asp:Button ID="CreateUserButton" runat="server" CommandName="MoveNext" Text="Create User" 
                                 ValidationGroup="RegisterUserValidationGroup"/>
                        </p>
                    </div>
                </ContentTemplate>
                <CustomNavigationTemplate>
                </CustomNavigationTemplate>
            </asp:CreateUserWizardStep>
<asp:CompleteWizardStep runat="server"></asp:CompleteWizardStep>
        </WizardSteps>
    </asp:CreateUserWizard>
                        <asp:SqlDataSource ID="SqlDSCompany" runat="server" 
        ConnectionString="<%$ ConnectionStrings:Yosi %>" SelectCommand="SELECT C.CompanyID, (C.Description + ' (' + D.Description + ')') AS Company
FROM SYS_Domain D
INNER JOIN SYS_Company AS C ON D.DomainID = C.DomainID 
ORDER BY D.Code, C.Code
"></asp:SqlDataSource>
</asp:Content>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Collections.Specialized;
using System.Data;
using System.Data.SqlClient;
using System.Text;
using System.Configuration;
  
using YBS.Membership;
using YBS.Manager;
using YBS.SQLDAL;
using YBS.SQLDAL.Entities;
  
using Telerik.Web;
using Telerik.Web.UI;
  
namespace YBS.Account
{
    public partial class Register : System.Web.UI.Page
    {
        private YBS.Manager.YBSBaseFunctions hdlBaseFunctions = new Manager.YBSBaseFunctions();
        public static String ConnString = ConfigurationManager.ConnectionStrings["Yosi"].ConnectionString;
  
        protected void Page_Load(object sender, EventArgs e)
        {
            RegisterUser.ContinueDestinationPageUrl = Request.QueryString["ReturnUrl"];
  
            SetObjectProperties();
        }
  
        protected void RegisterUser_CreatedUser(object sender, EventArgs e)
        {
            TextBox tbName = (TextBox)RegisterUserWizardStep.ContentTemplateContainer.FindControl("tbName");
  
            FormsAuthentication.SetAuthCookie(RegisterUser.UserName, false /* createPersistentCookie */);
  
            int _userID = new SYS_UserDAL().GetUserID(RegisterUser.UserName);
            hdlBaseFunctions.SetCurrentUserID(this.Context, _userID);
              
            if (tbName != null)
            {
                new YBSMembershipProvider().ChangeName(RegisterUser.UserName, tbName.Text);
            }
  
            SaveUserCompany(_userID);
  
            string continueUrl = RegisterUser.ContinueDestinationPageUrl;
            if (String.IsNullOrEmpty(continueUrl))
            {
                continueUrl = "~/";
            }
            Response.Redirect(continueUrl);
  
  
        }
  
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);
  
            if (!Page.IsPostBack)
            {
                string sSQLCompany = "";
                sSQLCompany += "SELECT C.CompanyID, (C.Description + ' (' + D.Description + ')') AS Company ";
                sSQLCompany += "FROM SYS_Domain D ";
                sSQLCompany += "INNER JOIN SYS_Company AS C ON D.DomainID = C.DomainID ";
                sSQLCompany += "ORDER BY D.Code, C.Code";
  
                SqlDSCompany.SelectCommandType = SqlDataSourceCommandType.Text;
                SqlDSCompany.SelectCommand = sSQLCompany;
            }
        }
  
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
  
        }
  
        protected void SetObjectProperties()
        {
            RadListBox rlbSourceCompany = (RadListBox)RegisterUserWizardStep.ContentTemplateContainer.FindControl("rlbSourceCompany");
            RadListBox rlbTargetCompany = (RadListBox)RegisterUserWizardStep.ContentTemplateContainer.FindControl("rlbTargetCompany");
  
            if (rlbSourceCompany != null)
            {
                rlbSourceCompany.Skin = "Windows7";
                rlbSourceCompany.SelectionMode = ListBoxSelectionMode.Multiple;
                rlbSourceCompany.AllowTransferOnDoubleClick = true;
                rlbSourceCompany.Header.Visible = true;
                rlbSourceCompany.AllowTransferDuplicates = false;
                rlbSourceCompany.AllowReorder = false;
            }
  
            if (rlbTargetCompany != null)
            {
                rlbTargetCompany.Skin = "Windows7";
                rlbTargetCompany.AllowReorder = false;
                rlbTargetCompany.AllowDelete = false;
            }
        }
  
        protected void SaveUserCompany(int iUserID)
        {
/*
            RadListBox rlbTargetCompany = (RadListBox)RegisterUserWizardStep.ContentTemplateContainer.FindControl("rlbTargetCompany");
  
            if (rlbTargetCompany.Items.Count > 0)
            {
                foreach (RadListBoxItem rlbItem in rlbTargetCompany.Items)
                {
                    SYS_UserCompanyDAL.SYS_UserCompany _objUserCompany = new SYS_UserCompanyDAL.SYS_UserCompany();
  
                    _objUserCompany.UserID = iUserID;
                    _objUserCompany.CompanyID = Convert.ToInt32(rlbItem.DataKey);
                }
            }
 */
        }
    }
}

1 Answer, 1 is accepted

Sort by
0
Peter Filipov
Telerik team
answered on 18 Apr 2011, 11:35 AM
Hello,

I wasn't able to reproduce your issue. Please find attached a sample project as part of my local tests.
Please try to modify the project so I can see the problem locally.

Greetings,
Peter Filipov
the Telerik team

Browse the vast support resources we have to jump start your development with RadControls for ASP.NET AJAX. See how to integrate our AJAX controls seamlessly in SharePoint 2007/2010 visiting our common SharePoint portal.

Tags
ListBox
Asked by
Roel
Top achievements
Rank 1
Answers by
Peter Filipov
Telerik team
Share this question
or