页面刚打开时没错,但一刷新就提示数组超出界限!代码如下:
namespace Telecai.luyou
{
using System;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using Telecai.cs; /// <summary>
/// TuijianHotel 的摘要说明。
/// </summary>
public class TuijianHotel : System.Web.UI.UserControl
{
protected System.Web.UI.WebControls.DataList Hotel;
SqlConnection ConnStr;
SqlDataAdapter da;
DataSet ds;
static int[] cityID=new int[5]{0,0,0,0,0};
int i=0;
static int j=0;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!IsPostBack)
{
string str=Conn.SqlStr();

try
{

ConnStr=new SqlConnection(str);
ConnStr.Open();
da=new SqlDataAdapter("select top 5 * from hotel order by h_jingjia",ConnStr);
ds=new DataSet();
da.Fill(ds,"hotel");
foreach(DataRow row in ds.Tables["hotel"].Rows)
{
//Response.Write(row["h_name"]);
cityID[i]=Convert.ToInt32(row["h_cityID"]);

i++;

}
Hotel.DataSource=ds.Tables["hotel"].DefaultView;
Hotel.DataBind();

  
}
catch(Exception en)
{
Response.Write("提起数据库时出错!");
Response.Write(en);
}
finally
{
da.Dispose();
ds.Dispose();
ConnStr.Close();
}
}
}
public void Hotel_Bound(object sender,DataListItemEventArgs e)//给Label赋值,得到宾馆所在城市
{
//int cityID=10;
if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{

try
{
string str=Conn.SqlStr();

SqlConnection ConnStr=new SqlConnection(str);
ConnStr.Open();
SqlCommand CommStr=new SqlCommand("select c_name from city where id="+cityID[j],ConnStr);
SqlDataReader dr=CommStr.ExecuteReader();
if(dr.Read())
{

((Label)e.Item.FindControl("city")).Text=dr["c_name"].ToString();
    

}
}
catch(Exception en)
{
Response.Write("提起数据时出错!");
Response.Write(en);
}
finally
{


ConnStr.Close(); }

j++; //用于判断加载项

}
} #region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器
/// 修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load); }
#endregion
}
}

解决方案 »

  1.   

    你的cityID索引值只能到4,你怎么就使用10了,不超界还说不过去…
      

  2.   

    楼上的,我没有用10啊!
    //int cityID=10;
    =========================
    SqlCommand CommStr=new SqlCommand("select c_name from city where id="+cityID[j],ConnStr);
      

  3.   

    static int j=0;
    原因就在这!
    j是一个静态变量,而静态变量只初始化一次,
    所以当你J++后,再刷新这个page时,J实时不为0
    所以数组一定会超出界限!
    解决办法
    去掉static就ok了!!
      

  4.   

    看来还是figoren(figoren) 同志厉害啊!谢谢你!