Solved

Index (zero based) must be greater than or equal to zero and less than the size of the argument list.

Posted on 2004-03-31
7
3,225 Views
Last Modified: 2008-02-01
Tried very hard to solve the error above but I don't really know what does it mean, please help. My codes are as below :

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

namespace RealTimePortal
{
      /// <summary>
      /// Summary description for Directory.
      /// </summary>
      public class Directory : System.Web.UI.Page
      {
            protected string u_name;
            protected System.Data.SqlClient.SqlConnection connection1;
            protected System.Data.SqlClient.SqlConnection connection2;
            protected System.Data.SqlClient.SqlConnection WebHostConn;
            protected System.Data.SqlClient.SqlCommand command1;
            protected System.Data.SqlClient.SqlDataAdapter SqlDataAdapter1;
            protected DataSet m_ds = new DataSet();
            protected System.Web.UI.WebControls.Button Button2;
            protected System.Web.UI.WebControls.Label Label1;
            protected System.Web.UI.WebControls.Label Label2;
            protected System.Web.UI.WebControls.DataGrid DataGrid1;
      
            private void Page_Load(object sender, System.EventArgs e)
            {
                  u_name = Request.QueryString["u_name"];
                  
                  //connection1 = new SqlConnection("server=localhost;database=PORTAL DONE;Trusted_Connection=yes");
                  System.Data.SqlClient.SqlConnection WebHostConn = new SqlConnection ("data source=66.102.133.244; initial catalog=sanath;integrated security=false;user id=koongaik;password=koongaik1051");
                  command1 = new SqlCommand("SP_udirSel",WebHostConn);
                  command1.CommandType = CommandType.StoredProcedure;

                  SqlParameter uname = new SqlParameter("@uname", SqlDbType.VarChar,50);
                  uname.Value = u_name;
                  command1.Parameters.Add(uname);

                  SqlParameter a1 = new SqlParameter("@a1", SqlDbType.VarChar,50);
                  a1.Value = "";
                  command1.Parameters.Add(a1);

                  SqlParameter a2 = new SqlParameter("@a2", SqlDbType.VarChar,50);
                  a2.Value = "";
                  command1.Parameters.Add(a2);

                  SqlParameter a3 = new SqlParameter("@a3", SqlDbType.VarChar,50);
                  a3.Value = "";
                  command1.Parameters.Add(a3);

                  SqlParameter a4 = new SqlParameter("@a4", SqlDbType.VarChar,50);
                  a4.Value = "";
                  command1.Parameters.Add(a4);

                  SqlParameter a5 = new SqlParameter("@a5", SqlDbType.VarChar,50);
                  a5.Value = "";
                  command1.Parameters.Add(a5);


                  SqlDataAdapter1 = new SqlDataAdapter();
                  SqlDataAdapter1.SelectCommand = command1;
                  SqlDataAdapter1.SelectCommand.CommandType = CommandType.StoredProcedure;
                  SqlDataAdapter1.Fill(m_ds,"Directory");
                  DataGrid1.DataSource = m_ds;
                  if (!IsPostBack)
                  {
                        DataGrid1.DataBind();
                  }
            }

            #region Web Form Designer generated code
            override protected void OnInit(EventArgs e)
            {
                  //
                  // CODEGEN: This call is required by the ASP.NET Web Form Designer.
                  //
                  InitializeComponent();
                  base.OnInit(e);
            }
            
            /// <summary>
            /// Required method for Designer support - do not modify
            /// the contents of this method with the code editor.
            /// </summary>
            private void InitializeComponent()
            {    
                  this.Button2.Click += new System.EventHandler(this.Button2_Click);
                  this.DataGrid1.ItemCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_ItemCommand);
                  this.DataGrid1.SelectedIndexChanged += new System.EventHandler(this.DataGrid1_SelectedIndexChanged);
                  this.Load += new System.EventHandler(this.Page_Load);

            }
            #endregion

            private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
            {
                  string clickID = e.Item.Cells[5].Text;
                  if (e.CommandName == "Select")
                  {
                        Response.Redirect(clickID);
                  }
            }

            private void Button2_Click(object sender, System.EventArgs e)
            {
                  Response.Redirect("Home.aspx?u_name=" + u_name);

            }

            private void DataGrid1_SelectedIndexChanged(object sender, System.EventArgs e)
            {
            
            }
      }
}
0
Comment
Question by:alanvoon
7 Comments
 
LVL 4

Expert Comment

by:Jarodtweiss
Comment Utility
The only line where I can see a problem is the following one :
string clickID = e.Item.Cells[5].Text;

Check the count of cells to validate that 5 is a valid index :
if (e.Item.Cells.Count >= 6)
{
    string clickID = e.Item.Cells[5].Text; //Cells[5] is the 6th cell
}
0
 

Author Comment

by:alanvoon
Comment Utility
I have tried the above code, but the same error still persists, would somebody please give me a detailed explanation of the error ?? Please help...
0
 
LVL 2

Accepted Solution

by:
eric_duncan earned 20 total points
Comment Utility
The error is being thrown because somewhere your code is trying to access either an array or a collection with an index that is either less than zero (the first element in an array has an index of 0, so you can't go any lower) or greater than the index of the last item in the array. For example, if you have the following array:

int[] x = new int[5] {1,2,3,4,5};

then

x[0] is 1,
x[1] is 2,
x[2] is 3,
x[3] is 4,
and x[4] is 5.

If you were to try this:

x[-1]

or this:

x[5]

you would get the error you are describing above because your indexer is out of the bounds of the array.

Does this help? Try stepping through the code in the debugger to see the line that is causing the error, then check to see if there is a variable being used as an indexer that is outside of the bounds of the array.

Eric
0
 
LVL 2

Assisted Solution

by:sedmans
sedmans earned 20 total points
Comment Utility
The other line that could possible cause this problem is

 u_name = Request.QueryString["u_name"];

You need to make sure that your url contains a u_name parameter.
0
 
LVL 10

Assisted Solution

by:ptmcomp
ptmcomp earned 20 total points
Comment Utility
Be carefull publishing connection strings of servers using public IP addresses! I think you should change username and password.
0

Featured Post

How to improve team productivity

Quip adds documents, spreadsheets, and tasklists to your Slack experience
- Elevate ideas to Quip docs
- Share Quip docs in Slack
- Get notified of changes to your docs
- Available on iOS/Android/Desktop/Web
- Online/Offline

Join & Write a Comment

Suggested Solutions

This article is for Object-Oriented Programming (OOP) beginners. An Interface contains declarations of events, indexers, methods and/or properties. Any class which implements the Interface should provide the concrete implementation for each Inter…
It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
Internet Business Fax to Email Made Easy - With eFax Corporate (http://www.enterprise.efax.com), you'll receive a dedicated online fax number, which is used the same way as a typical analog fax number. You'll receive secure faxes in your email, fr…
Excel styles will make formatting consistent and let you apply and change formatting faster. In this tutorial, you'll learn how to use Excel's built-in styles, how to modify styles, and how to create your own. You'll also learn how to use your custo…

772 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now