我想实现这样的功能:当数据库中有记录时,当单击“下一步”或“上一步”时,在各控件中显示相应的内容;若数据库中没有记录,当单击那两个按纽时,弹出“这一步目标尚未分解,请分解!”。可是,程序却老是不听话,请大家帮我驯服它。
下面是相关的代码:
void clearText()
{
txt_qishi.Text="";
txt_zhongzhi.Text="";
txt_gsbida.Text="";
txt_gstiaozhan.Text="";
txt_bidascore.Text="";
txt_chascore.Text="";
}
void show()
{
//用于查询数据
SqlConnection conn=new SqlConnection(); //新建连接对象
conn.ConnectionString= //从配置文件中获取信息
ConfigurationSettings.AppSettings["ConnectionString"];
SqlCommand cmd=new SqlCommand();
cmd.Connection=conn; //必不可少
string SQLstr="Select * from gsmb where mubiaoID=@ID";
cmd.CommandText=SQLstr;
cmd.Parameters.Add(new SqlParameter("@ID", SqlDbType.VarChar,50)); //关键之处
cmd.Parameters["@ID"].Value=Session["gsID"].ToString()+"-"+Session["counter"].ToString();
conn.Open(); //打开连接,读取数据.
SqlDataReader reader;
reader=cmd.ExecuteReader();
//设置控件属性以显示信息
while(reader.Read()) //使前进到并读取下一条记录.
{
Response.Write("<script language='javascript'>alert('Nice to meet you!');</script>"); //仅为测试而用用 if(reader.GetString(0)=="")
{
//clearText();
Response.Write("<script language='javascript'>alert('这一步目标尚未分解,请分解!');</script>");
}
else
{
Response.Write("<script language='javascript'>alert('Nice to meet you!');</script>"); if(reader.GetDateTime(1).ToString()!="") //注意数据类型
this.txt_qishi.Text=reader.GetDateTime(1).ToString();
if(reader.GetDateTime(2).ToString()!="") //注意数据类型
this.txt_zhongzhi.Text=reader.GetDateTime(2).ToString();
if(reader.GetString(3)!="")
this.txt_gsbida.Text=reader.GetString(3);
if(reader.GetString(4)!="")
this.txt_gstiaozhan.Text=reader.GetString(4);
if(reader.GetString(5)!="")
this.txt_bidascore.Text=reader.GetString(5);
if(reader.GetString(6)!="")
this.txt_chascore.Text=reader.GetString(6);
}
}
reader.Close();
conn.Close();
}
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
//此处放置初始化和查询代码.
if(!Page.IsPostBack)
{
Session["counter"]=1;
}
show();//显示该步骤各项信息
}
private void btn_back_Click(object sender, System.EventArgs e)
{ //用于实现“上一步”,代码次序不可换
if ((int)Session["counter"]==1) //注意格式
{
Response.Redirect("gsmb.aspx");
}
else
{
Session["counter"]=(int)Session["counter"]-1; //注意格式
lbl_dijibu.Text="第"+Session["counter"].ToString()+"步";
show();//显示该步骤各项信息
}
} private void btn_next_Click(object sender, System.EventArgs e)
{ //用于实现“下一步”,代码次序不可换
int a=(int)Session["counter"];
int b=Convert.ToInt32(Session["buzhou"]);
if (a<b-1) //注意格式
{
Session["counter"]=(int)Session["counter"]+1;
lbl_dijibu.Text="第"+Session["counter"].ToString()+"步";
}
else if (a==b-1) //注意格式
{
Session["counter"]=b;
lbl_dijibu.Text="第"+Session["counter"].ToString()+"步(最后一步)";
}
show();//显示该步骤各项信息
}
其中,“下一步”和“上一步”代码能正确地实现lbl_dijibu控件显示第几步的功能。但是,下面的代码出了问题:
if(reader.GetString(0)=="")
{
//clearText();
Response.Write("<script language='javascript'>alert('这一步目标尚未分解,请分解!');</script>");
}
我有一个4步的目标,前2步已分解,后2步未分解。我把if(reader.GetString(0)=="")换成if(reader.GetString(0)!=""),在前2步(此时满足条件)可以弹出“这一步目标尚未分解,请分解!”,但是,若把 != 换成==,则在后两步无法弹出“这一步目标尚未分解,请分解!”!同样的代码,有的能弹出,有的却弹不出。实在太气人人了!
还还有一个问题,我添加下面这行代码仅为了测试:
Response.Write("<script language='javascript'>alert('Nice to meet you!');</script>"); //仅为测试而用用
但却发现了问题:从另一页面通过链接进入本页面(此时为第一步)时,弹出1次'Nice to meet you!点“下一步”,从第1步到第2步,弹出了2次;从第2步到第三步,弹出了1次;从第3步到第四步,未弹出。点“上一步”,第四到第三,0次;第三到第2,1次;第2到第一,2次;第1到前一页面,1次。我百思不得其解。
大家能不能帮个忙,看到底怎么回事?谢谢!
下面是相关的代码:
void clearText()
{
txt_qishi.Text="";
txt_zhongzhi.Text="";
txt_gsbida.Text="";
txt_gstiaozhan.Text="";
txt_bidascore.Text="";
txt_chascore.Text="";
}
void show()
{
//用于查询数据
SqlConnection conn=new SqlConnection(); //新建连接对象
conn.ConnectionString= //从配置文件中获取信息
ConfigurationSettings.AppSettings["ConnectionString"];
SqlCommand cmd=new SqlCommand();
cmd.Connection=conn; //必不可少
string SQLstr="Select * from gsmb where mubiaoID=@ID";
cmd.CommandText=SQLstr;
cmd.Parameters.Add(new SqlParameter("@ID", SqlDbType.VarChar,50)); //关键之处
cmd.Parameters["@ID"].Value=Session["gsID"].ToString()+"-"+Session["counter"].ToString();
conn.Open(); //打开连接,读取数据.
SqlDataReader reader;
reader=cmd.ExecuteReader();
//设置控件属性以显示信息
while(reader.Read()) //使前进到并读取下一条记录.
{
Response.Write("<script language='javascript'>alert('Nice to meet you!');</script>"); //仅为测试而用用 if(reader.GetString(0)=="")
{
//clearText();
Response.Write("<script language='javascript'>alert('这一步目标尚未分解,请分解!');</script>");
}
else
{
Response.Write("<script language='javascript'>alert('Nice to meet you!');</script>"); if(reader.GetDateTime(1).ToString()!="") //注意数据类型
this.txt_qishi.Text=reader.GetDateTime(1).ToString();
if(reader.GetDateTime(2).ToString()!="") //注意数据类型
this.txt_zhongzhi.Text=reader.GetDateTime(2).ToString();
if(reader.GetString(3)!="")
this.txt_gsbida.Text=reader.GetString(3);
if(reader.GetString(4)!="")
this.txt_gstiaozhan.Text=reader.GetString(4);
if(reader.GetString(5)!="")
this.txt_bidascore.Text=reader.GetString(5);
if(reader.GetString(6)!="")
this.txt_chascore.Text=reader.GetString(6);
}
}
reader.Close();
conn.Close();
}
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
//此处放置初始化和查询代码.
if(!Page.IsPostBack)
{
Session["counter"]=1;
}
show();//显示该步骤各项信息
}
private void btn_back_Click(object sender, System.EventArgs e)
{ //用于实现“上一步”,代码次序不可换
if ((int)Session["counter"]==1) //注意格式
{
Response.Redirect("gsmb.aspx");
}
else
{
Session["counter"]=(int)Session["counter"]-1; //注意格式
lbl_dijibu.Text="第"+Session["counter"].ToString()+"步";
show();//显示该步骤各项信息
}
} private void btn_next_Click(object sender, System.EventArgs e)
{ //用于实现“下一步”,代码次序不可换
int a=(int)Session["counter"];
int b=Convert.ToInt32(Session["buzhou"]);
if (a<b-1) //注意格式
{
Session["counter"]=(int)Session["counter"]+1;
lbl_dijibu.Text="第"+Session["counter"].ToString()+"步";
}
else if (a==b-1) //注意格式
{
Session["counter"]=b;
lbl_dijibu.Text="第"+Session["counter"].ToString()+"步(最后一步)";
}
show();//显示该步骤各项信息
}
其中,“下一步”和“上一步”代码能正确地实现lbl_dijibu控件显示第几步的功能。但是,下面的代码出了问题:
if(reader.GetString(0)=="")
{
//clearText();
Response.Write("<script language='javascript'>alert('这一步目标尚未分解,请分解!');</script>");
}
我有一个4步的目标,前2步已分解,后2步未分解。我把if(reader.GetString(0)=="")换成if(reader.GetString(0)!=""),在前2步(此时满足条件)可以弹出“这一步目标尚未分解,请分解!”,但是,若把 != 换成==,则在后两步无法弹出“这一步目标尚未分解,请分解!”!同样的代码,有的能弹出,有的却弹不出。实在太气人人了!
还还有一个问题,我添加下面这行代码仅为了测试:
Response.Write("<script language='javascript'>alert('Nice to meet you!');</script>"); //仅为测试而用用
但却发现了问题:从另一页面通过链接进入本页面(此时为第一步)时,弹出1次'Nice to meet you!点“下一步”,从第1步到第2步,弹出了2次;从第2步到第三步,弹出了1次;从第3步到第四步,未弹出。点“上一步”,第四到第三,0次;第三到第2,1次;第2到第一,2次;第1到前一页面,1次。我百思不得其解。
大家能不能帮个忙,看到底怎么回事?谢谢!
其实是
//Response.Write("<script language='javascript'>alert('Nice to meet you!');</script>"); //仅为测试而用。
下面else 中的这行代码有效。
还有一点,点“上一步”,由第1步到前一页面,未弹出,而非弹出1次。