2010-04-12 47 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> 

请注意使用扩展器。它实际上只允许在任何时间点检查一个“选择”复选框。我不认为这正是你想要的,但你应该能够适应你的需求。

相关问题