none
radiobutton的checked属性在前台如何控制? RRS feed

  • 问题

  • 有一个int变量sex。我想根据这个值来预设radiobutton。下面的代码改过很多次,就是没有用。

    <asp:RadioButton ID="RadioButton1" runat="server" Checked=<%(int)Eval("sex")==1?"True":"False" %> />

    请问大家应该如何修改?(后台编写代码的不考虑,因为我只是想看看这个如何解决)


    Felix
    2011年8月30日 3:24

答案

  • 会不会是因为没有bind呢?

     

     

    <%@ Page Language="C#" %>
    
    
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    
    
    <script runat="server">
    
    
    
     public int sex = 0;
    
    
    
    </script>
    
    
    
    <html xmlns="http://www.w3.org/1999/xhtml" >
    
    
    
    <head id="Head1" runat="server">
    
    
    
     <title>MultiView Tabs</title>
    
    
    
    </head>
    
    
    
    <body>
    
    
    
     <form id="form1" runat="server">
    
    
    
     <div>
    
    
    
     <asp:RadioButton ID="RadioButton1"runat="server"Checked='<%# Convert.ToBoolean(Eval("sex").ToString()=="1" ? "True" : "False") %>'/>
    
    
    
     <br />
    
    
    
     <asp:Button ID="Button1" runat="server" Text="Button" />
    
    
    
    
    
    
    
     </div>
    
    
    
     </form>
    
    
    
    </body>
    
    
    
    </html>
    
    
    
    

     


    Felix


    请放一个SqlDataSource,再放一个GridView去綁定,把您说的该字段转成TemplateField后,再用我提供的

    <asp:RadioButton ID="RadioButton1" runat="server" Checked='<%# Convert.ToBoolean(Eval("sex").ToString()=="1" ? "True" : "False") %>' />

    去试试看

    Sample Code:

    <asp:SqlDataSource runat="server" ID="sds_test" ConnectionString="<%$ ConnectionStrings:NorthwindChineseConnectionString %>"
      SelectCommand="SELECT * FROM [tb_test]" />
     <asp:GridView runat="server" ID="gv_test" AutoGenerateColumns="False" DataKeyNames="id"
      DataSourceID="sds_test">
      <Columns>
       <asp:BoundField DataField="id" HeaderText="id" InsertVisible="False" ReadOnly="True"
        SortExpression="id" />
       <asp:TemplateField HeaderText="sex" SortExpression="sex">
        <ItemTemplate>
         <asp:RadioButton ID="RadioButton1" runat="server" Checked='<%# Convert.ToBoolean(Eval("sex").ToString()=="1" ? "True" : "False") %>' GroupName="sex" />
         <asp:RadioButton ID="RadioButton2" runat="server" Checked='<%# Convert.ToBoolean(Eval("sex").ToString()!="1" ? "True" : "False") %>' GroupName="sex" />
        </ItemTemplate>
       </asp:TemplateField>
      </Columns>
     </asp:GridView>
    

     


    Shadowと愉快なコード達

    • 已标记为答案 felix9 2011年8月31日 3:11
    2011年8月30日 5:19

全部回复

  • 请试试看

    <asp:RadioButton ID="RadioButton1" runat="server" Checked='<%# Eval("sex").ToString()=="1" ? True : False %>' />
    

     

     


    Shadowと愉快なコード達
    2011年8月30日 3:49
  • 这个我试过,报以下错误 当前上下文中不存在名称“True”
    Felix
    2011年8月30日 3:52
  • 这个我试过,报以下错误 当前上下文中不存在名称“True”
    Felix


    这样呢?

    <asp:RadioButton ID="RadioButton1" runat="server" Checked='<%# Convert.ToBoolean(Eval("sex").ToString()=="1" ? "True" : "False") %>' />
    
    

     


    Shadowと愉快なコード達

    2011年8月30日 3:57
  • 还是不行,报错如下

     

    错误    1    服务器标记的格式不正确。  


    Felix
    2011年8月30日 4:01
  • 还是不行,报错如下

     

    错误    1    服务器标记的格式不正确。  


    Felix

    能否把前台代码贴上来看看?
    Shadowと愉快なコード達
    2011年8月30日 4:43
  • 会不会是因为没有bind呢?

     

    <%@ Page Language="C#" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <script runat="server">
      public int sex = 0;
    </script>
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head id="Head1" runat="server">
      <title>MultiView Tabs</title>
    </head>
    <body>
      <form id="form1" runat="server">
      <div>
        <asp:RadioButton ID="RadioButton1"runat="server"Checked='<%# Convert.ToBoolean(Eval("sex").ToString()=="1" ? "True" : "False") %>'/>
        <br />
        <asp:Button ID="Button1" runat="server" Text="Button" />
    
      </div>
      </form>
    </body>
    </html>
    


    Felix
    2011年8月30日 5:11
  • <asp:RadioButton ID="RadioButton1" Checked='<%# Eval("sex").ToString() == "1" ? true : false %>' runat="server" />
    


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/
    2011年8月30日 5:18
  • 会不会是因为没有bind呢?

     

     

    <%@ Page Language="C#" %>
    
    
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    
    
    <script runat="server">
    
    
    
     public int sex = 0;
    
    
    
    </script>
    
    
    
    <html xmlns="http://www.w3.org/1999/xhtml" >
    
    
    
    <head id="Head1" runat="server">
    
    
    
     <title>MultiView Tabs</title>
    
    
    
    </head>
    
    
    
    <body>
    
    
    
     <form id="form1" runat="server">
    
    
    
     <div>
    
    
    
     <asp:RadioButton ID="RadioButton1"runat="server"Checked='<%# Convert.ToBoolean(Eval("sex").ToString()=="1" ? "True" : "False") %>'/>
    
    
    
     <br />
    
    
    
     <asp:Button ID="Button1" runat="server" Text="Button" />
    
    
    
    
    
    
    
     </div>
    
    
    
     </form>
    
    
    
    </body>
    
    
    
    </html>
    
    
    
    

     


    Felix


    请放一个SqlDataSource,再放一个GridView去綁定,把您说的该字段转成TemplateField后,再用我提供的

    <asp:RadioButton ID="RadioButton1" runat="server" Checked='<%# Convert.ToBoolean(Eval("sex").ToString()=="1" ? "True" : "False") %>' />

    去试试看

    Sample Code:

    <asp:SqlDataSource runat="server" ID="sds_test" ConnectionString="<%$ ConnectionStrings:NorthwindChineseConnectionString %>"
      SelectCommand="SELECT * FROM [tb_test]" />
     <asp:GridView runat="server" ID="gv_test" AutoGenerateColumns="False" DataKeyNames="id"
      DataSourceID="sds_test">
      <Columns>
       <asp:BoundField DataField="id" HeaderText="id" InsertVisible="False" ReadOnly="True"
        SortExpression="id" />
       <asp:TemplateField HeaderText="sex" SortExpression="sex">
        <ItemTemplate>
         <asp:RadioButton ID="RadioButton1" runat="server" Checked='<%# Convert.ToBoolean(Eval("sex").ToString()=="1" ? "True" : "False") %>' GroupName="sex" />
         <asp:RadioButton ID="RadioButton2" runat="server" Checked='<%# Convert.ToBoolean(Eval("sex").ToString()!="1" ? "True" : "False") %>' GroupName="sex" />
        </ItemTemplate>
       </asp:TemplateField>
      </Columns>
     </asp:GridView>
    

     


    Shadowと愉快なコード達

    • 已标记为答案 felix9 2011年8月31日 3:11
    2011年8月30日 5:19
  • 这次可以了,原来用convert来装换类型。

    但我不明白,eval只对数据库里面取数据有用吗?
    Felix
    2011年8月31日 3:11
  • 这次可以了,原来用convert来装换类型。

    但我不明白,eval只对数据库里面取数据有用吗?
    Felix


    是的

    有做 捞取数据动作时,Eval这个关键字才有效

    原本您的前台代码主要错在Eval不知道从哪个数据取值


    Shadowと愉快なコード達

    2011年8月31日 3:18
  • 我用下面这段代码替换掉你之前给我的代码,可以工作,但当我把着两句代码移到其他网页,就不能正常工作。这是为什么?

     

    <asp:RadioButton ID="RadioButton1" runat="server" Checked='<%#Convert.ToBoolean("True") %>' GroupName="sex" />
    <asp:RadioButton ID="RadioButton2" runat="server" Checked='<%#Convert.ToBoolean("False") %>' GroupName="sex" />


    Felix
    2011年8月31日 3:36
  • 我用下面这段代码替换掉你之前给我的代码,可以工作,但当我把着两句代码移到其他网页,就不能正常工作。这是为什么?

     

    <asp:RadioButton ID="RadioButton1" runat="server" Checked='<%#Convert.ToBoolean("True") %>' GroupName="sex" />
    <asp:RadioButton ID="RadioButton2" runat="server" Checked='<%#Convert.ToBoolean("False") %>' GroupName="sex" />


    Felix


    不知道您其他网页是做什么动作?

    看起来只要

      <asp:RadioButton ID="RadioButton1" runat="server" Checked="true" GroupName="sex" />
    <asp:RadioButton ID="RadioButton2" runat="server" Checked="false" GroupName="sex" />
    

     

    就好了
    Shadowと愉快なコード達
    2011年8月31日 3:47
  • 什么都不做,纯粹只是放两个radiobutton进去,看看嵌入的后台代码能否正常工作。我有点搞不清楚像这种很小的嵌入后台代码应该如何写。有用<%#%>、<%=%>、<%%>,有点糊涂。
    Felix
    2011年8月31日 3:56