看看《感动中国》的在线投票网址:http://news.cctv.com/special/2008gandongzhongguo/03/
它是用什么控件来呈现数据的呢(一个人一个人横向摆布的)?或者说,没有用控件?
就想模拟实现下这种数据呈现方式

解决方案 »

  1.   

    没看出是用什么语言开发的,效果的话DataList也可以做到。
      

  2.   

    投票系统用的是嵌套datalist(或者repeater也行)
    在模板里面加上checkboxlist控件和radiobuttonlist控件
      全部设置为隐藏
    然后在后台绑定事件中去判断(这里涉及到数据库设计了,有一个表示类型的列,还有一个表示排列方式)列,
    如果是单选的话就绑定到单选按钮,再根据排列方式来设置就可以了
    其他的道理都是一样的
      

  3.   

    我用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,然后去数据库里执行语句  
                    }
                }
            }
      

  4.   

    我一般这样写:<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是你要获取的值
       }
    }
      

  5.   

    你可以在页面下面添加一个确认投票按钮写逻辑
    没有你那样直接在datalist里面处理投票事件的
      不符合实际
    刚选完还没点投票按钮就处理时间
      你不觉的这样很怪么
      

  6.   

    你理解错了,我的第二段C#的代码是在DataList之外的一个按钮,他的点击事件是看DataList的中有哪些CheckBox被勾选了,然后把这些CheckBox对应的单元中的物品名称取出来,作为SQL的一个参数去执行语句。现在关键就是取得在DataList中与CheckBox平级的那个Label中的SoftName了。