页面刚打开时没错,但一刷新就提示数组超出界限!代码如下:
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
}
}
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
}
}
解决方案 »
- 未知的服务器控件ASP:UpdatePanel错误,该如何解决啊?以前用的时atlas的,可是工具箱里面没有
- 拜求:用正则得到一个新闻页面的内容。时间。来源,也有例子。(加急)
- 请问Sub Page_Load(Source As Object, E As EventArgs)
- asp.net如何刷新页面,如何获得IE地址栏中的网址
- asp.net里使用PNG背景透明后控件无法使用
- 关于点击按钮提交后,怎么能保存datagrid中已显示的数据,
- 菜鸟提问,高手请指教
- [初学求助]制作完的windows窗体应用程序如何导出exe文件?
- asp.net人员薪水大调查,请大家踊跃参加,随便说!
- 请各位多指教!
- [50分求教] 关于大数据量(近百万条数据)如何从库中获取、展示……`
- 有人遇到这样的oracle连接问题么?
//int cityID=10;
=========================
SqlCommand CommStr=new SqlCommand("select c_name from city where id="+cityID[j],ConnStr);
原因就在这!
j是一个静态变量,而静态变量只初始化一次,
所以当你J++后,再刷新这个page时,J实时不为0
所以数组一定会超出界限!
解决办法
去掉static就ok了!!