<script type="text/javascript" language="javascript" defer="defer">
     function getvalue(obj) {
            document.getElementById("radHid").value =obj.value;
           
        }    </script>  <asp:Repeater ID="repReport" runat="server">
                        <ItemTemplate>
                            <tr>
                                <td>
                                    <input id='rad_<%#Eval("PaperCode")%>' type="radio" name="Chose" value='<%#Eval("PaperCode")%>' onclick="getvalue(this)" />
                                   
                                </td>
                            </tr>
                        </ItemTemplate>
                    </asp:Repeater>
我在Repeater外面定义   <input type="hidden" id="radHid" value="" runat="server" />
<a href='abc.aspx?PaperCode="<%=GetPaperCode() %>"'>填写报告</a> 
后台代码:  public string GetPaperCode()
        {
            string PaperCode = radHid.Value;
            return PaperCode;
        }我不知道那JS代码对不对,我获取不到这个radHid.Value值.

解决方案 »

  1.   

    在repeater中使用RUNAT=SERVER的redio 就可以再CS中直接获取了 何必绕一圈呢,而且这样也不能实现你要的功能 CS是通过viewstate来判断服务器控件的状态的!你用JS修改的他获取不到的!
      

  2.   

    你先查看源代码,看
    <input id='rad_<%#Eval("PaperCode")%>' type="radio" name="Chose" value='<%#Eval("PaperCode")%>' onclick="getvalue(this)" />里面这个value有没有值
    然后在
    <script type="text/javascript" language="javascript" defer="defer">
         function getvalue(obj) {
                document.getElementById("radHid").value =obj.value;
               alert(document.getElementById("radHid").value);
            }    </script>
    看是否赋值成功了
    最后
    感觉你这个思路不太对,onclick的时候,你给radHid赋值,这都是客户端的东西,页面并不刷新,就没法再执行GetPaperCode()这个cs方法了,你怎么能取到值呢?
      

  3.   


      <input id='rad_8' type="radio" name="Chose" value='8' onclick="getvalue(this)" />里面都有值,赋值也成功了。请问下你说的最后那点该如何实现。是不是像一楼那位说的直接加runat="server" 但是在后台好像不能直接识别。
      

  4.   


    在Repeater里面的那些按钮控件好像都不能直接在后台识别,请问下,应该如何解决!
      

  5.   

    onclick="getvalue(this)" 
    改为onclick="getvalue('<%#Eval("PaperCode")%>')" getvalue改为
        function getvalue(str) {
                document.getElementById("radHid").value =str;
               
            }
      

  6.   

    你可以接着用js实现,把下面代码放一个htm里,你试试就明白了<script type="text/javascript" language="javascript" defer="defer">
         function getvalue(obj) {
                //document.getElementById("radHid").value =obj.value;
               document.getElementById("tlink").href="abc.aspx?PaperCode="+obj.value;
            }    </script>
        <a id="asasa" value="tttt" href="javascript:void(0);" onclick="getvalue(this)">aaaaaaaa</a>
        <a id="tlink">填写报告</a> 
      

  7.   


    document.getElementById("radHid").value 里面已经有值了,现在的问题就是2楼说的那个页面不有刷新,没法再执行GetPaperCode()这个cs方法了。
      

  8.   

    在Repeater里面的那些按钮控件好像都不能直接在后台识别,请问下,应该如何解决!后台可以用 
    foreach(items e in thisrepeater)
    {
    radiobutton thisbutton = (radiobutton)e.findcontrol("radio");
    string aa= thisbutton.value;
    }
    这样找到,前提是
    <input id='rad_8' type="radio" name="Chose" value='8' onclick="getvalue(this)" />
    要runat=server
      

  9.   


    谢谢,刚才这个传值解决了。我想问一下,我后面还有一个角色ID要传,但是角色ID是在后台获取到的,照这种方法的话,应该怎么解决。
      

  10.   

    晕,asp.net数据绑定执行在前,html/javascript在页面输出后,当然GetPaperCode()无效了.你最终目的就是要<a href>填写报告</a> 指定一个特定url参数是吗?用js不就直接搞定了?把<a href>一个id,譬如 <a id="xxx" href=>填写报告</a>     function getvalue(obj) {
    document.getElementById("xxx").href ="abc.aspx?PaperCode"+obj.value;}