高手进来,一个简单的ASP.NET程序扩展问题

FeelTouch Labs
博客专家认证
2009-11-07 09:14:33
描述:我已经做好了投票页面,并且运行良好.这个页面的功能是根据上个页面传递过来的ID号,从数据库的两个表中分别检索标题和选项,并显示出来,其中每个标题的选项数是不固定的,而且根据题目自动生成单选按钮或多选按钮,所有的上面这些功能都已经实现.现在我想修改一下页面,如果投票用户选中了一个"其它"的选项,页面就显示一个TEXTBOX控件(也就是可以把用户认为其他的内容保存起来,当然如果选项中没有"其它",或者用户没有选中它,这个控件,就不可用或者不显示).不知大家是否明白了我的意思,下面是我的.aspx<body>
<form id="form1" runat="server">
<div id="main">
<div id="title">大学生就业问题调查问卷(学生问卷)</div>
<div id="single">
<h1><asp:Label ID="lblTitle" runat="server" Text=""></asp:Label></h1>
<p>
<asp:RadioButtonList ID="rbl" runat="server">
</asp:RadioButtonList>
<asp:CheckBoxList ID="cbl" runat="server">
</asp:CheckBoxList>
</p>
<p>
<asp:Button ID="btnSubmit" runat="server" Text="提交" onclick="btnSubmit_Click" />
<asp:Button ID="btnView" runat="server" Text="查看" onclick="btnView_Click" />
</p>

<p><a href="Default1.aspx">查看其他投票</a></p>





</div>
</div>

</form>
</body>代码
和.cs代码
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
VotingData();
}
}
/// <summary>
/// 投票选项显示
/// </summary>
private void VotingData()
{
string ItemID = Request.QueryString["id"]; //投票问题编号,上一个页面传过来的

bool IsMult = false;

ItemID.Replace("'", ""); //简单处理,屏蔽单引号
//查询该问题是否存在voitStartTime
string strSql = "SELECT voitID,voitTitle,voitIsMult FROM VoteItem WHERE voitID=" + ItemID;

string strConn = System.Configuration.ConfigurationManager.ConnectionStrings["VoteConnectionString"].ConnectionString;
SqlConnection conn = new SqlConnection(strConn);
conn.Open();

SqlCommand comm = new SqlCommand(strSql, conn);
SqlDataReader dr = comm.ExecuteReader();
if (dr.Read())
{
lblTitle.Text = dr.GetString(1); //dr["voitTitle"].ToString();
IsMult = dr.GetBoolean(2);

}

dr.Close();



//显示答案选项
string strSqlChoice = "SELECT vochID,vochTitle FROM VoteChoice WHERE voitID=" + ItemID;
SqlCommand chComm = new SqlCommand(strSqlChoice, conn);
SqlDataReader chDr = chComm.ExecuteReader(CommandBehavior.CloseConnection);
//多选,单选的不同显示
if (IsMult)
{
cbl.Visible = true;
cbl.DataSource = chDr;
cbl.DataTextField = "vochTitle";
cbl.DataValueField = "vochID";
cbl.DataBind();
rbl.Visible = false;
}
else
{
rbl.Visible = true;
rbl.DataSource = chDr;
rbl.DataTextField = "vochTitle";
rbl.DataValueField = "vochID";
rbl.DataBind();
cbl.Visible = false;
}
chDr.Close();
conn.Close();
}

/// <summary>
/// 保存投票点击
/// </summary>
/// <param name="chid"></param>
private void VoteSave(int chid)
{
string strSave = "UPDATE VoteChoice SET vochCount = vochCount + 1 WHERE vochID = " + chid;
string strConn = System.Configuration.ConfigurationManager.ConnectionStrings["VoteConnectionString"].ConnectionString;
SqlConnection conn = new SqlConnection(strConn);
conn.Open();
SqlCommand commSave = new SqlCommand(strSave, conn);
commSave.ExecuteNonQuery();
conn.Close();
}

protected void btnSubmit_Click(object sender, EventArgs e)
{
if (rbl.Visible == true)
{
//单选
int i = Convert.ToInt32(rbl.SelectedItem.Value);
VoteSave(i);
}
else
{
//多选
for (int i = 0; i < cbl.Items.Count; i++)
{
if (cbl.Items[i].Selected)
{
int j = Convert.ToInt32(cbl.Items[i].Value);
VoteSave(j);
}
}
}
Response.Write("<script language='javascript'>alert('投票成功,谢谢支持。');location.href='Default1.aspx';</script>");
}
protected void btnView_Click(object sender, EventArgs e)
{
string ItemID = Request.QueryString["id"]; //投票问题编号
Response.Redirect("detailQuestion.aspx?id=" + ItemID);
}
在线交流!!!
...全文
187 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq993461639 2009-11-08
  • 打赏
  • 举报
回复
ding
FeelTouch Labs 2009-11-07
  • 打赏
  • 举报
回复
等了这么久还是没什么消息,最终自己解决了,现在把代码贴上也好让遇到同样困难的朋友参看
private void VotingData()
{
string ItemID = Request.QueryString["id"]; //投票问题编号,上一个页面传过来的

bool IsMult = false;

ItemID.Replace("'", ""); //简单处理,屏蔽单引号
//查询该问题是否存在voitStartTime
string strSql = "SELECT voitID,voitTitle,voitIsMult FROM VoteItem WHERE voitID=" + ItemID;

string strConn = System.Configuration.ConfigurationManager.ConnectionStrings["VoteConnectionString"].ConnectionString;
SqlConnection conn = new SqlConnection(strConn);
conn.Open();

SqlCommand comm = new SqlCommand(strSql, conn);
SqlDataReader dr = comm.ExecuteReader();
if (dr.Read())
{
lblTitle.Text = dr.GetString(1); //dr["voitTitle"].ToString();
IsMult = dr.GetBoolean(2);

}

dr.Close();



//显示答案选项
string strSqlChoice = "SELECT vochID,vochTitle FROM VoteChoice WHERE voitID=" + ItemID;
SqlCommand chComm = new SqlCommand(strSqlChoice, conn);
SqlDataReader chDr = chComm.ExecuteReader(CommandBehavior.CloseConnection);
//多选,单选的不同显示
if (IsMult)
{
cbl.Visible = true;
cbl.DataSource = chDr;
cbl.DataTextField = "vochTitle";
cbl.DataValueField = "vochID";
cbl.DataBind();
rbl.Visible = false;
for (int m = 0;m<cbl.Items.Count; m++)
{
if (cbl.Items[m].Text == "其他")
{
TextBox1.Visible = true;
}
else
{
TextBox1.Visible = false;

}
}
}
else
{
rbl.Visible = true;
rbl.DataSource = chDr;
rbl.DataTextField = "vochTitle";
rbl.DataValueField = "vochID";
rbl.DataBind();
cbl.Visible = false;
for (int n = 0; n < rbl.Items.Count; n++)
{
if (rbl.Items[n].Text == "其他")
{
TextBox1.Visible = true;
}
else
{
TextBox1.Visible = false;

}
}


}
chDr.Close();
conn.Close();
}

/// <summary>
/// 保存投票点击
/// </summary>
/// <param name="chid"></param>
private void VoteSave(int chid)
{
string strSave = "UPDATE VoteChoice SET vochCount = vochCount + 1 WHERE vochID = " + chid;
string strConn = System.Configuration.ConfigurationManager.ConnectionStrings["VoteConnectionString"].ConnectionString;
SqlConnection conn = new SqlConnection(strConn);
conn.Open();
SqlCommand commSave = new SqlCommand(strSave, conn);
commSave.ExecuteNonQuery();
conn.Close();
}

protected void btnSubmit_Click(object sender, EventArgs e)
{
if (rbl.Visible == true)
{

//单选
int i = Convert.ToInt32(rbl.SelectedItem.Value);
VoteSave(i);
}
else
{
//多选
for (int i = 0; i < cbl.Items.Count; i++)
{
if (cbl.Items[i].Selected)
{
int j = Convert.ToInt32(cbl.Items[i].Value);
VoteSave(j);
}
}
}
Response.Write("<script language='javascript'>alert('投票成功,谢谢支持。');location.href='Default1.aspx';</script>");
}
protected void btnView_Click(object sender, EventArgs e)
{
string ItemID = Request.QueryString["id"]; //投票问题编号
Response.Redirect("detailQuestion.aspx?id=" + ItemID);
}
FeelTouch Labs 2009-11-07
  • 打赏
  • 举报
回复
4楼:我的"其它"选项是从数据库来的,不一定是复选框,也有可能是单选.2楼:别发广告
sohighthesky 2009-11-07
  • 打赏
  • 举报
回复

<form id="form1" runat="server">
<div id="main">
<div id="title">大学生就业问题调查问卷(学生问卷) </div>
<div id="single">
<h1> <asp:Label ID="lblTitle" runat="server" Text=""> </asp:Label> </h1>
<p>
<asp:RadioButtonList ID="rbl" runat="server">
</asp:RadioButtonList>
<asp:CheckBoxList ID="cbl" runat="server">
</asp:CheckBoxList>
<asp:CheckBox ID="CheckBox1" runat="server" Text="其它" />
<asp:TextBox ID="TextBox1" TextMode="MultiLine" style="display:none" runat="server"></asp:TextBox>
<script type="text/javascript">
var g=function(id){return document.getElementById(id);};
g("<%=CheckBox1.ClientID %>").onclick=function(){
var textbox=g("<%=TextBox1.ClientID %>");
if(this.checked) {
textbox.style.display=""
} else {
textbox.style.display="none";
}
}
</script>
</p>
<p>
<asp:Button ID="btnSubmit" runat="server" Text="提交" onclick="btnSubmit_Click" />
<asp:Button ID="btnView" runat="server" Text="查看" onclick="btnView_Click" />
</p>

<p> <a href="Default1.aspx">查看其他投票 </a> </p>





</div>
</div>

</form>
w_azhu 2009-11-07
  • 打赏
  • 举报
回复
顶上...
hou476466741 2009-11-07
  • 打赏
  • 举报
回复
FeelTouch Labs 2009-11-07
  • 打赏
  • 举报
回复
补充:实现效果马上结贴给分,数据库有两个表分别是VoteChoice(vochID,voitID,vochTitle,vochCount)和Voteitem(voitID,voitTitle,voitIsMult),字段也很简单,能见文识义
wuyq11 2009-11-07
  • 打赏
  • 举报
回复
y也可使用datalist或reapter嵌入控件实现投票。
wuyq11 2009-11-07
  • 打赏
  • 举报
回复
解决就好
happy664618843 2009-11-07
  • 打赏
  • 举报
回复
恭喜lz问题解决了 友情帮顶

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧