菜鸟我一个月前还完全不知道什么是类,继承,现在接到一个很急的做网页的任务,现向各位大虾求教:要做一个投票的网页,网页中有若干个单选题,要求每题必选,对各个选项的投票分别进行计数。
投票控件用checkbox。
选择结束后,点击一个确定button。要求先对页面进行校验,保证每题都做了选择,否则仍在原页面上提示出错信息,点击一个重选button,重新选择。
如果确定每个单选题都已被选择,则转到下一个页面,输出投票结果。在这里菜鸟我有两处问题:
1.当网页跳转时,如何将第一个网页里的投票数据保存到下个网页输出,用application实现了一下,可以用,但感觉不太稳定。
2.再就是网页校验问题。开始没有链接输出结果网页时,是直接在网页下方设了一个显示出错信息的label,当按下button时,触发click事件,判断选择题是否已全部做完,若否,则将label设为可见,提示出错,再点重选button,又将label设为不可见。但链接网页(用PostBackUrl属性)后发现若出错,网页直接跳转了,而通过click事件修改PostBackUrl又不行(?why)。而验证栏里的控件好像又不能校验checkbox和button(不知道那个CustomValidator行不行,怎么用)。所以请高手给个意见,小弟万分感谢!跪拜求教!
投票控件用checkbox。
选择结束后,点击一个确定button。要求先对页面进行校验,保证每题都做了选择,否则仍在原页面上提示出错信息,点击一个重选button,重新选择。
如果确定每个单选题都已被选择,则转到下一个页面,输出投票结果。在这里菜鸟我有两处问题:
1.当网页跳转时,如何将第一个网页里的投票数据保存到下个网页输出,用application实现了一下,可以用,但感觉不太稳定。
2.再就是网页校验问题。开始没有链接输出结果网页时,是直接在网页下方设了一个显示出错信息的label,当按下button时,触发click事件,判断选择题是否已全部做完,若否,则将label设为可见,提示出错,再点重选button,又将label设为不可见。但链接网页(用PostBackUrl属性)后发现若出错,网页直接跳转了,而通过click事件修改PostBackUrl又不行(?why)。而验证栏里的控件好像又不能校验checkbox和button(不知道那个CustomValidator行不行,怎么用)。所以请高手给个意见,小弟万分感谢!跪拜求教!
解决方案 »
- 怎么让一个button拖动后top,left不要出去panel1?
- 麻烦看下代码,弹出的Form为何显示不出来,页面闪烁,急!
- SQL SERVER2000连接问题
- 继续100分求助 如何在DATAGRID一行中添加CHECKBOX (不是CHECKBOX列)!!!
- C#读.exe文件的简单问题
- 关于序列化的问题
- 屏幕取词,大家给个思路!
- C# 一句话使程序停止响应,你遇到过吗?
- 关于。NET Remoting的问题,请大家帮忙,谢谢!
- 急!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
- mouseEnter事件中这行代码该怎么写?当鼠标进入功能按钮的上方时,就可给出一些提示信息
- 一个登陆中疑惑???大虾请进!
2.写Javascript验证是否选择以及控制是否跳转页面
我现在用Application传递。 Application["votes1"] = votesOfPro1;
Application["votes2"] = votesOfPro2;
Application["votes3"] = votesOfPro3;
然后在第二页: //取出数据
int votesOfPro11=(int)Application["votes1"];
int votesOfPro12 = (int)Application["votes2"];
int votesOfPro13 = (int)Application["votes3"];
//显示结果
ResultLabel.Text = "i=" + votesOfPro11.ToString()+
votesOfPro12.ToString()+votesOfPro13.ToString();但奇怪的是,无论怎么投票,结果总是显示i=021
设置在第一页显示,得到的结果是正确的。
但传递到第二页,结果就不对了,真是匪夷所思啊!
2:你可以在服务器端判断是否全部填写,如果不则返回要填完整 如果全部满足则转
------------------------------------------------------------------------------------
用控件校验吗?如果不用控件,怎么控制转页呢?
高歌大哥提出的倒是一种思路,不过我还是想变成老鸟的,session怎么用阿?
int i = (int)this.Session["Num"];你可以用它来记录票数~
this.Session["votesOfPro1"]=8;
提示编译错误:不能在变量声明中指定数组大小(尝试用new表达式初始化)
又用下面的语句试了一下,还是提示上面的错误
int Session["votesOfPro1"]=new Session;
/未将对象引用设置到对象的实例
错误行:行 30: int votesOfPro11 = (int)Session ["votes1"];
2. 如果是单选题,不要用checkbox, 用radiobuttonlist,校验如下函数(我机器上没有环境,无法调试,只是凭印象写的,可能有错,你自己调试一把)
private bool CheckSelected()
{
foreach (Control radioBut in this.Controls)
{
if (radioBut is RadioButtonList)
{
if ((radioBut as RadioButtonList).SelectedIndex < 0)
{
return false;
} }
}
return true;
}
可以判断有没有题没有选择
private void Button1_Click(object sender, System.EventArgs e)
{
this.Session["Num"] = 8;
}private void Button2_Click(object sender, System.EventArgs e)
{
int i = (int)this.Session["Num"];
}在第一页存,第二页取出来用
/未将对象引用设置到对象的实例
错误行:行 30: int votesOfPro11 = (int)Session ["votes1"];这是你没有将Session ["votes1"]赋初值
凡是报这个错的,你都需要检查检查有什么东西没有实例化就被拿来用了
当出现这样的问题:
就是第一次调试程序时,传给第二个网页的数据是对的,但再改变投票结果,继续调试,则第二个网页始终显示第一次调试的结果,也就是说,随着调试的改变,第二个页面的传递结果没有更新。但先断开第二页,而只在第一页上验证结果,显示是正确的。第二页的代码如下:
protected void Page_Load(object sender, EventArgs e)
{
initResultPage();
}
private void initResultPage()
{
ResultTitle.Visible = true;
ResultLabel.Visible = true;
//取数据
int votesOfPro11=(int)Application["votes1"];
int votesOfPro12 = (int)Application["votes2"];
int votesOfPro13 = (int)Application["votes3"];
//显示数据
ResultLabel.Text = "i=" + votesOfPro11.ToString()
+votesOfPro12.ToString()+votesOfPro13.ToString();
不过数据库迟早要加的。
说明每次调试时第二页的 initResultPage()都被执行了,但数据却传不过来。
但断开第二页,在第一页上用Application["votes1"]输出又是正确的,
实在是奇怪!