2010-04-12 49 views
0

我有一個ASP.NET 2.0 ListView控件(又名:親本)和配置了該ListView的我有另一個內部的ListView(又名:子)。對於每個父行都有的行,可能有一個可以有1-3行的子ListView控件。每行有兩個複選框(一個選擇複選框和一個拒絕複選框)。如何獲取listview行的ID或引用我點擊了一個複選框?

我需要處理JavaScript中這些複選框,這樣,如果一個選擇選擇在任何行的所有其他選擇選項都被取消和拒絕複選框該行唯一沒有被選中。未選中的行可以選中拒絕複選框。

這是最好的方法是什麼?

+1

+1。最好的方法是學習JavaScript。 :d – fig 2010-04-12 19:18:32

+0

顯然你需要以及:) – danielea 2010-04-12 20:05:17

回答

0

我盡我所能去了解標記怎麼會從你的描述,但基本上我建立的包括一組複選框輸入(忽略窮人的標記)多個div。

<div> 
    <form> 
     <label>Yes</label> 
     <input type="checkbox" value="1" name="alerts[rateAlert]" class="alert_check_box auto_check_box" tabindex="1000" autocomplete="off"> 
     <label>No</label> 
     <input type="checkbox" value="1" name="alerts[rateAlert]" class="alert_check_box auto_check_box" tabindex="1000" autocomplete="off"> 
     <label>Maybe</label> 
     <input type="checkbox" value="1" name="alerts[rateAlert]" class="alert_check_box auto_check_box" tabindex="1000" autocomplete="off"> 
    </form> 
</div> 
<div> 
    <form> 
     <label>Yes</label> 
     <input type="checkbox" value="1" name="alerts[rateAlert]" class="alert_check_box auto_check_box" tabindex="1000" autocomplete="off"> 
     <label>No</label> 
     <input type="checkbox" value="1" name="alerts[rateAlert]" class="alert_check_box auto_check_box" tabindex="1000" autocomplete="off"> 
     <label>Maybe</label> 
     <input type="checkbox" value="1" name="alerts[rateAlert]" class="alert_check_box auto_check_box" tabindex="1000" autocomplete="off"> 
    </form> 
</div> 

從這裏我開始使用jQuery(非常容易使用,但你來弄清楚如何設置)。

$('input').change(function(){ 
    if($(this).attr('checked')) { 
     $(this).parent().find('input').attr('checked', false); 
     $(this).attr('checked', true); 
    } 
}); 

這個腳本監聽所有複選框更改事件,然後運行基於它被包含在母公司的支票。如果這個複選框被選中,取消選中包含所有其他的複選框在那個父母身上。

你可以讓這個更具體的您的if語句中或創建否則,如果其他具體使用情況說明。

if(check-box is checked and doesnt have class name ABC) { 
    //do normal stuff above 
} else if(specific check-box with class name of ABC is checked) { 
    //do something else 
} 
+0

這看起來像正是我需要的,但它不是燒製的複選框,點擊/變化事件。 – danielea 2010-04-13 16:58:20

0

認爲您可以使用MutuallyExclusiveCheckboxExtenderAjaxControlToolkit做你想做什麼。以下是您所描述內容的粗略實施:

<asp:ListView ID="parentListView" runat="server" ItemPlaceholderID="PlaceHolder1"> 
    <LayoutTemplate> 
     <asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder> 
    </LayoutTemplate> 
    <ItemTemplate> 
     <asp:Label ID="lblFieldSet" runat="server" Text='<%# Eval("SetName") %>' /> 
     <br /> 
     <asp:ListView ID="childListView" runat="server" DataSource='<%# Eval("Items") %>' 
      ItemPlaceholderID="PlaceHolder2"> 
      <LayoutTemplate> 
       <asp:PlaceHolder ID="PlaceHolder2" runat="server"></asp:PlaceHolder> 
      </LayoutTemplate> 
      <ItemTemplate> 
       <div> 
        <asp:Label ID="lblItemName" runat="server" Text='<%# Eval("ItemName") %>' /> 
        <br /> 
        <asp:CheckBox ID="cbSelect" runat="server" Text="Select" /> 
        <asp:CheckBox ID="cbDeny" runat="server" Text="Deny" /> 
        <ajaxToolkit:MutuallyExclusiveCheckBoxExtender ID="exclusiveCheckboxExtender" runat="server" 
         TargetControlID="cbSelect" Key="Select" /> 
       </div> 
      </ItemTemplate> 
     </asp:ListView> 
    </ItemTemplate> 
</asp:ListView> 

請注意使用擴展器。它實際上只允許在任何時間點檢查一個「選擇」複選框。我不認爲這正是你想要的,但你應該能夠適應你的需求。

相關問題