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,306 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
7 Comments
 
LVL 4

Expert Comment

by:Jarodtweiss
ID: 10730304
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
ID: 10733293
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
ID: 10733430
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
ID: 10741228
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
ID: 10753089
Be carefull publishing connection strings of servers using public IP addresses! I think you should change username and password.
0

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In order to hide the "ugly" records selectors (triangles) in the rowheaders, here are some suggestions. Microsoft doesn't have a direct method/property to do it. You can only hide the rowheader column. First solution, the easy way The first sol…
Entity Framework is a powerful tool to help you interact with the DataBase but still doesn't help much when we have a Stored Procedure that returns more than one resultset. The solution takes some of out-of-the-box thinking; read on!
Although Jacob Bernoulli (1654-1705) has been credited as the creator of "Binomial Distribution Table", Gottfried Leibniz (1646-1716) did his dissertation on the subject in 1666; Leibniz you may recall is the co-inventor of "Calculus" and beat Isaac…
Are you ready to implement Active Directory best practices without reading 300+ pages? You're in luck. In this webinar hosted by Skyport Systems, you gain insight into Microsoft's latest comprehensive guide, with tips on the best and easiest way…

730 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