c#
  • asp.net
  • checkbox
  • 2013-10-04 24 views 5 likes 
    5

    檢查值我有一個屬性設置用於評估和演示(布爾)

    public bool AutoRenew 
    { 
        get; 
        set; 
    } 
    

    ,並在頁面:

    <input type="checkbox" checked='<%# Eval("AutoRenew") %>' /> 
    

    但它始終是檢查,即使屬性的值是false

    我嘗試了以下變化:

    <input type="checkbox" checked='<%# Convert.ToBoolean(Eval("AutoRenew")) %>' /> 
    <input type="checkbox" checked='<%# Convert.ToBoolean(Eval("AutoRenew")) == true %>' /> 
    <input type="checkbox" checked='<%# (Boolean)Eval("AutoRenew") %>' /> 
    

    但沒有任何工程,它一直被檢查。表情應該是什麼樣子?

    編輯:這裏是頁面有問題的一部分:

    ... 
    <asp:ListView ID="MyListView" runat="server"> 
        <LayoutTemplate> 
         <table class="ms-listviewtable" style="background-color: White;"> 
          <tr class="ms-viewheadertr ms-vhltr"> 
           <th class="ms-vh-icon" scope="col"> 
            <input type="checkbox" /> 
           </th> 
           <th class="ms-vh2"> 
            <div class="ms-vh-div"><a>Training Item</a></div> 
           </th> 
           <th class="ms-vh2"> 
            <div class="ms-vh-div"><a>Training Task Type</a></div> 
           </th> 
           <th class="ms-vh2"> 
            <div class="ms-vh-div"><a>Due Date</a></div> 
           </th> 
           <th class="ms-vh2"> 
            <div class="ms-vh-div"><a>Auto-Renew</a></div> 
           </th> 
           <th class="ms-vh2"> 
            <div class="ms-vh-div"><a>Training Reason</a></div> 
           </th> 
          </tr> 
          <tr id="itemplaceholder" runat="server"></tr> 
         </table> 
        </LayoutTemplate> 
        <ItemTemplate> 
         <tr class="ms-itmhover"> 
          <td class="ms-vb-itmcbx ms-vb-firstCell"> 
           <input type="checkbox" class="s4-itm-cbx" /> 
          </td> 
          <td class="ms-vb-title"> 
           <div class="ms-vb itx"><a><%# Eval("Title")%></a></div> 
          </td> 
           <td class="ms-vb2"> 
            <asp:DropDownList ID="TaskTypeDropDownList" runat="server"> 
            </asp:DropDownList> 
           </td> 
           <td class="ms-vb2"><%# Eval("DueDate")%></td> 
           <td class="ms-vb2" style="text-align: center;"> 
            <input type="checkbox" checked='<%# Convert.ToBoolean(Eval("AutoRenew")) %>' /> 
           </td> 
           <td class="ms-vb2"><%# Eval("TrainingReason")%></td> 
          </tr> 
         </ItemTemplate> 
         ... 
    
    +0

    我花了一點要記住......「檢查「是那些不需要價值的屬性之一,但爲了使其符合標準,使用checked ='checked'。任何價值都會評估爲「真實」。 –

    +0

    查看我的更新回答... –

    回答

    17

    您正在使用普通的HTML複選框

    將數據綁定到您必須使用檢查佩林HTML複選框= 「選中」

    如果使用ASP.NET複選框控件,然後您的原始代碼將順利運行。

    純html控件有區別&綁定數據時ASP.NET控件。

    //for asp.net checkbox 
    <asp:CheckBox ID="IdCheckBox" runat="server" Checked="<%# Convert.ToBoolean(Eval("AutoRenew")) %>" /> 
    
    //for plain html checkbox 
    <input type="checkbox" <%# Convert.ToBoolean(Eval("AutoRenew")) ? "checked" : "" %> /> 
    
    +0

    它與' asp:CheckBox',但我仍然不明白爲什麼即使使用@Satpal的代碼,它仍然被檢查。 – Boris

    +0

    我會檢查,等待... –

    +0

    我試過它在示例頁面上, />, />,這兩個條件都可以很好地工作。你能發佈更多細節 –

    3

    所需的輸出HTML應該讓你在路上:

    <input type="checkbox" checked="checked" /> 
    <input type="checkbox" /> 
    

    這意味着,不檢查的複選框,你不應該在輸出中提及checked屬性,即使值爲false。

    +1

    重要的一點需要注意,大部分時間都被忽略... –

    2

    添加checked屬性如果Convert.ToBoolean(Eval("AutoRenew"))true

    <input type="checkbox" 
        <%# Convert.ToBoolean(Eval("AutoRenew")) ? "checked" : string.Empty %> /> 
    
    +0

    每次仍然檢查... – Boris

    +0

    現在開始... – Boris

    +0

    @Boris,很高興聽到這個 – Satpal

    1

    您可以檢查Grid_RowDataBound事件anytype類型值:

    ASPX:

    <asp:GridView ID="GridMain" runat="server" OnRowDataBound="GridMain_RowDataBound">     
        <Columns>      
         <asp:TemplateField> 
         <ItemTemplate> 
            <asp:CheckBox runat="server" ID="grid_chkbox" Enabled="false" /> 
           </ItemTemplate 
         </asp:TemplateField>       
        </Columns>    
    </asp:GridView> 
    

    aspx.cs:

    protected void GridMain_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
        if (e.Row.RowType == DataControlRowType.DataRow) 
        { 
        //find the checkboxes in the template field. 
         CheckBox grid_chkbox= (CheckBox)e.Row.FindControl("grid_chkbox");    
    
        //find boolean value in current record 
         grid_chkbox.Checked = e.Row.DataItem.boolvalue; 
        } 
    } 
    
    相關問題