我在datalist的ItemTemplate里放了checkbox,代码如下:<asp:DataList ID="DataList3" runat="server" 
 onitemdatabound="DataList3_ItemDataBound">
       <ItemTemplate>
             <asp:CheckBox ID="CheckOption" runat="server" value='<%# Eval("id")%>'
              oncheckedchanged="CheckOption_CheckedChanged" AutoPostBack="True" />
       </ItemTemplate>
</asp:DataList>
现在我想要实现当选中了checkbox后,就返回该checkbox的value,(value='<%# Eval("id")%>') ??
而且我发现protected void CheckOption_CheckedChanged(object sender, EventArgs e)事件怎么没反应?难道一定要有protected void DataList3_ItemDataBound(object sender, DataListItemEventArgs e)事件吗?就算两个事件都有,运行时也只是刷新一下页面,并无任何反应?我想实现当选中了checkbox后,就返回该checkbox的value,(value='<%# Eval("id")%>') 可以吗??谢谢!!

解决方案 »

  1.   

    <input type="checkbox" name="CheckOption" runat="server" value='<%# Eval("id")%>' />后台用Request.Params["CheckOption"].ToString()取值
      

  2.   

    可是我是在datalist模板中的checkbox,<input type="checkbox" name="CheckOption" runat="server" value=' <%# Eval("id")%>' /> 这样可以吗?还有取值的话应该我选哪个checkbox就显示相应的value,(有多个checkbox,我还要通过事件先判断选中的是哪个checkbox,然后根据选中的那个显示它的value),是不是没那么简单呢??
      

  3.   

    前台代码是这样:<asp:DataList ID="DataList3" runat="server" 
     onitemdatabound="DataList3_ItemDataBound">
           <ItemTemplate>
                 <input id="CheckOption" type="checkbox" name="CheckOption"    onchange="CheckOption_CheckedChanged" runat="server" value=' <%# Eval("id")%>' />
           </ItemTemplate>
    </asp:DataList>
    后台:protected void CheckOption_CheckedChanged(object sender, EventArgs e)
    {        
          Request.Params["CheckOption"].ToString();
    }
    没有任何反应的,我知道我这么写是错的,可HTML控件怎么写事件才是对的呢?(通过事件先判断选中的是哪个checkbox,然后根据选中的那个显示它的value)??
      

  4.   

    楼主在点击 checkbox 时候要实现什么功能呢?
      

  5.   


    在点击checkbox时想根据选中的那个checkbox显示它的value,value值是我通过数据库绑定的id,得到了value之后我就能知道选的是哪个选项,从而让这个选项的投票数增加,我做的是投票系统
      

  6.   

    一个小例子供参考<html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title></title>
        
        <script type="text/javascript">
            function vote(obj)
            {
                alert(obj.value);
                //可以得到value的值
                //然后可以用ajax的方法 给该ID投一票
            }
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:DataList ID="DataList1" runat="server">
                <HeaderTemplate>
                    <table>
                        <tr>
                            <td>选择</td>
                            <td>编号</td>
                            <td>名称</td>
                        </tr>
                </HeaderTemplate>
                <ItemTemplate>
                     <tr>
                            <td><input type="checkbox" value='<%# Eval("ID") %>' onclick="vote(this)" /></td>
                            <td><%# Eval("ID") %></td>
                            <td><%# Eval("Name") %></td>
                        </tr>
                </ItemTemplate>
                <FooterTemplate>
                </table>
                </FooterTemplate>
            </asp:DataList>
        </div>
        </form>
    </body>
    </html>
    [code=C#]
     protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    DataList1.DataSource = GetData();
                    DataList1.DataBind();
                }
            }
            private DataTable GetData()
            {
                //新建表
                DataTable dt = new DataTable();            //定义表结构
                dt.Columns.Add("Id", typeof(System.Int32));
                dt.Columns.Add("Name", typeof(System.String));            //添加新行
                for (int i = 0; i <= 5; i++)
                {
                    DataRow dr = dt.NewRow();
                    dr[0] = i;
                    dr[1] = "oec200" + i;
                    dt.Rows.Add(dr);
                }
                return dt;
            }
    [/code]
      

  7.   


    可问题是AJAX的方法我不会写,还有没有什么其他办法??
      

  8.   


    在repeater的模板中可以这样用,datalist没试过,应该是一样的<input name="C_NewsID" type="checkbox" id="C_NewsID" value="<%#Eval("ID") %>">
    随便选中几个,提交页面 后台用 Request["C_NewsID"]得到是"1,2,3"这样的字符串再操作数据库就很方便了
      

  9.   

    @ 可问题是AJAX的方法我不会写,还有没有什么其他办法??---
    如果是在页面的一个区域有个投票功能 ,如果点击checkbox 页面就刷新了 不是很好,所以建议用ajax做
    我的这篇文章中有讲ajaxpro怎么用 有兴趣可以看下
      

  10.   


    但是似乎你的文章里所说的我感觉我并派不上用场嘛?我现在可以实现的是点不同的checkbox可以得到相应的id了,是参考了你的例子,现在我要做的就是我要根据得到的id去数据库里把相应的投票数增加,(因为我的数据都是数据库里来的)
    function vote(obj)
    {
          alert(obj.value);
          //可以得到value的值
          //然后可以用ajax的方法 给该ID投一票
    }
    其中"用ajax的方法 给该ID投一票",我想通过数据库来完成,这样可以吗??
      

  11.   

    其中"用ajax的方法 给该ID投一票",我想通过数据库来完成,这样可以吗??
    ----
    当然可以啊 ,我那个文章是讲Autocomplete的 ,不过提到了ajaxpro的用发 
    你可以在后台写个方法 根据传入的参数ID 去更新数据库
    public string Vote(string id)
    {
        //执行数据库更新操作
    }function vote(obj)
    {
        //调用后台的Vote方法
    }
      

  12.   

    现在问题是我怎么把前台的那个方法中得到的id传到后台的方法中呢? 
    --------------js函数vote可以到的id值
    function vote(obj)
    {
        //调用后台的Vote方法
        var id=obj.value;
        //使用Ajaxpro 具体用法可以看我那篇文章
        var result=命名空间.类名.Vote(id).value;  //result就是后台方法的返回值 
    }
      

  13.   


    现在还有一个小小的问题:function vote(obj)
    {
          var id = obj.value;
           //然后可以用ajax的方法 给该ID投一票(调用C#方法)
          //<%=Vote(id)%>;
          selectVote.Vote(id);
    }public void Vote(int id)
    {
         //执行数据库更新操作(后传给JS方法)
         using (SqlConnection conn = new SqlConnection(str))
         {
             conn.Open();
             SqlCommand comm = new SqlCommand("update voteDetail set cont=cont+1 where id='"+id+"'", conn);
             comm.ExecuteNonQuery();
         }
    }    
    运行时报错:The name 'id' does not exist in the current context
    为什么会说id不存在,不是我明明已经声明过了吗?(var id = obj.value;)??是不是我前台或者后台代码有错??谢谢!!
      

  14.   

    能不能发偶一份,谢谢哈!
    [email protected]
      

  15.   

    <a href="baidu.com">来看看<a>