问个关于投票系统的问题 看看《感动中国》的在线投票网址:http://news.cctv.com/special/2008gandongzhongguo/03/它是用什么控件来呈现数据的呢(一个人一个人横向摆布的)?或者说,没有用控件?就想模拟实现下这种数据呈现方式 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 没看出是用什么语言开发的,效果的话DataList也可以做到。 投票系统用的是嵌套datalist(或者repeater也行)在模板里面加上checkboxlist控件和radiobuttonlist控件 全部设置为隐藏然后在后台绑定事件中去判断(这里涉及到数据库设计了,有一个表示类型的列,还有一个表示排列方式)列,如果是单选的话就绑定到单选按钮,再根据排列方式来设置就可以了其他的道理都是一样的 我用DataList做了。<asp:DataList ID="DataList2" runat="server" RepeatColumns="5" RepeatDirection="Horizontal" Width="862px"> <ItemTemplate> <table style="font-size:9pt;font-family:Verdana"> <tr align="center"> <td> <img src="<%#Eval("SoftPic") %>" style="border:solid black 1pt;width:90pt;height:90pt" alt="<%#Eval("SoftPic") %>"/> </td> </tr> <tr align="center" valign="middle"> <td> <asp:Label ID="SoftName" runat ="server" Text='<%#Eval("SoftName") %> '/> </td> </tr> <tr align="center" valign="middle"> <td> <asp:Label ID="VoteNum" runat ="server" Text ='<%#Eval("VoteNum") %> ' /> <asp:CheckBox ID ="myCheck" runat="server" Text='投票' /> </td> </tr> </table> </ItemTemplate> <HeaderStyle HorizontalAlign="Center" Font-Bold="False" Font-Italic="False" Font-Overline="False" Font-Strikeout="False" Font-Underline="False" /> <ItemStyle BackColor="#F0F0F0" /> <FooterStyle Font-Bold="False" Font-Italic="False" Font-Overline="False" Font-Strikeout="False" Font-Underline="False" HorizontalAlign="Right" /> <EditItemStyle Font-Bold="False" Font-Italic="False" Font-Overline="False" Font-Strikeout="False" Font-Underline="False" HorizontalAlign="Center" /> </asp:DataList>代码如上,里面有个“投票”的CheckBox,我想在勾选这个CheckBox后,按按钮就能在数据库中为该软件+1票,请问我能不能在得到myCheck这个checkBox状态的时候,也能得到SoftName这个Label的Text?因为要执行SQL语句。foreach( DataListItem dli in DataList2.Items ) { CheckBox cb = dli.FindControl("myCheck") as CheckBox; if (cb != null) { if (cb.Checked) { //这里要得到SoftName,然后去数据库里执行语句 } } } 我一般这样写:<span><%=voteNum%>票</span>很方便如果你非要这样写<asp:Label ID="VoteNum" runat ="server" Text ='<%#Eval("VoteNum") %> ' />在尝试了所有能想到的办法还是不可以的话,可以这样写:<asp:Label ID="VoteNum" runat ="server" Text ='<%#Eval("VoteNum") %> ' /><span>票</span>这也是不是办法的办法,而且不会对你下面获取Label的Text造成任何影响,我觉得很好。下面解决你第二个问题:前台呈现数据这样:<asp:Repeater id="rpt_voteNum" runat="server"> <ItemTemplate> <asp:HiddenField ID="hid_voteNum" Value='<%# Bind("VoteNum") %>' runat="server" /> //隐藏域 <td><asp:CheckBox runat="server" ID="cb_voteNum" /><%#Eval("VoteNum")%></td></ItemTemplate></asp:Repeater>后台处理:for (int i = 0; i < totalNum; i++){ CheckBox chkBox = (CheckBox)(rpt_voteNum.Items[i].FindControl("cb_voteNum")); if (chkBox.Checked == true) { num = ((HiddenField)(rpt_voteNum.Items[i].FindControl("hid_voteNum"))).Value; //这里解决获取值的问题 //这里写你要执行的SQL语句,上面num是你要获取的值 }} 你可以在页面下面添加一个确认投票按钮写逻辑没有你那样直接在datalist里面处理投票事件的 不符合实际刚选完还没点投票按钮就处理时间 你不觉的这样很怪么 你理解错了,我的第二段C#的代码是在DataList之外的一个按钮,他的点击事件是看DataList的中有哪些CheckBox被勾选了,然后把这些CheckBox对应的单元中的物品名称取出来,作为SQL的一个参数去执行语句。现在关键就是取得在DataList中与CheckBox平级的那个Label中的SoftName了。 导出 Excel 问题 MsChart颜色设置问题 为PDF配置DCOM 急急急~十万火急,关于smtpclient发邮件的问题,高手帮帮啊! 如何获得treeview相邻节点的value???急!!! 请求支援-->安装VS2005错误(Invalid keyboard code specified)! 急!!!!100分请教高手在.net2005正式版自带的水晶报表问题! Session使用的问题!急 关于动态添加菜单目录项 asp.net将在多久取代asp? 异步:委托?多进程?提高性能 明天人生中第一次面试,散分求题
在模板里面加上checkboxlist控件和radiobuttonlist控件
全部设置为隐藏
然后在后台绑定事件中去判断(这里涉及到数据库设计了,有一个表示类型的列,还有一个表示排列方式)列,
如果是单选的话就绑定到单选按钮,再根据排列方式来设置就可以了
其他的道理都是一样的
<ItemTemplate>
<table style="font-size:9pt;font-family:Verdana">
<tr align="center">
<td>
<img src="<%#Eval("SoftPic") %>" style="border:solid black 1pt;width:90pt;height:90pt" alt="<%#Eval("SoftPic") %>"/>
</td>
</tr>
<tr align="center" valign="middle">
<td>
<asp:Label ID="SoftName" runat ="server" Text='<%#Eval("SoftName") %> '/>
</td>
</tr> <tr align="center" valign="middle">
<td>
<asp:Label ID="VoteNum" runat ="server" Text ='<%#Eval("VoteNum") %> ' />
<asp:CheckBox ID ="myCheck" runat="server" Text='投票' />
</td>
</tr> </table>
</ItemTemplate> <HeaderStyle HorizontalAlign="Center" Font-Bold="False" Font-Italic="False" Font-Overline="False" Font-Strikeout="False" Font-Underline="False" />
<ItemStyle BackColor="#F0F0F0" />
<FooterStyle Font-Bold="False" Font-Italic="False" Font-Overline="False" Font-Strikeout="False"
Font-Underline="False" HorizontalAlign="Right" />
<EditItemStyle Font-Bold="False" Font-Italic="False" Font-Overline="False" Font-Strikeout="False"
Font-Underline="False" HorizontalAlign="Center" />
</asp:DataList>
代码如上,里面有个“投票”的CheckBox,我想在勾选这个CheckBox后,按按钮就能在数据库中为该软件+1票,请问我能不能在得到myCheck这个checkBox状态的时候,也能得到SoftName这个Label的Text?因为要执行SQL语句。
foreach( DataListItem dli in DataList2.Items )
{
CheckBox cb = dli.FindControl("myCheck") as CheckBox;
if (cb != null)
{
if (cb.Checked)
{
//这里要得到SoftName,然后去数据库里执行语句
}
}
}
很方便
如果你非要这样写
<asp:Label ID="VoteNum" runat ="server" Text ='<%#Eval("VoteNum") %> ' />
在尝试了所有能想到的办法还是不可以的话,可以这样写:
<asp:Label ID="VoteNum" runat ="server" Text ='<%#Eval("VoteNum") %> ' /><span>票</span>
这也是不是办法的办法,而且不会对你下面获取Label的Text造成任何影响,我觉得很好。下面解决你第二个问题:前台呈现数据这样:<asp:Repeater id="rpt_voteNum" runat="server">
<ItemTemplate>
<asp:HiddenField ID="hid_voteNum" Value='<%# Bind("VoteNum") %>' runat="server" /> //隐藏域
<td><asp:CheckBox runat="server" ID="cb_voteNum" /><%#Eval("VoteNum")%></td>
</ItemTemplate>
</asp:Repeater>后台处理:for (int i = 0; i < totalNum; i++)
{
CheckBox chkBox = (CheckBox)(rpt_voteNum.Items[i].FindControl("cb_voteNum"));
if (chkBox.Checked == true)
{
num = ((HiddenField)(rpt_voteNum.Items[i].FindControl("hid_voteNum"))).Value; //这里解决获取值的问题
//这里写你要执行的SQL语句,上面num是你要获取的值
}
}
没有你那样直接在datalist里面处理投票事件的
不符合实际
刚选完还没点投票按钮就处理时间
你不觉的这样很怪么