多个自定义控件无法正常工作

时间:2010-06-11 08:57:44

标签: asp.net controls

我在C#for 3.5中开发了一个ASP.Net Server自定义控件。名为“myCheckBoxList”,继承自CheckBoxList web控件。

工作很简单。它只是作为两个选项复选框按钮。我已经采用了一个总是显示两个复选框的CheckBoxList。工作是这样的,当选中一个复选框时,另一个应该取消选中,反之亦然。

只有当我在网页上只放置了该控件的一个实例时,此控件才能正常工作。如果我放置多个控件实例,那么它就不起作用。

2 个答案:

答案 0 :(得分:0)

为什么不使用单选按钮?您正在尝试重新创建已存在的控件的功能。如果您愿意,可以将它们设置为复选框,但大多数用户都知道单选按钮的作用以及它们的行为方式。
请尝试以下方法。它将重新创建您在评论中描述的行为。如果您需要为多个组执行此操作,则需要为每个组定义currentSelection变量,并为每个组定义不同的类,但可能有一个聪明的方法。我会留给你试验。也许你已经将它包装在一个控件中,并为每个contriol生成var和document.ready函数。一次只添加jquery-1.4.1.js引用。

<script type="text/javascript" src="/js/jquery-1.4.1.min.js"></script>

<script type="text/javascript" language="javascript">
var currentSelection;
$(document).ready(function() {
    $(".radio").click(function() {
        if (currentSelection == this.id) {
            this.checked = false;
        }
        else {
            currentSelection = this.id;
        }
    });
});
</script>        

<asp:RadioButton id="rb" runat="server" />
<asp:RadioButton id="rb1" runat="server" />

代码隐藏:

 rb.InputAttributes.Add("class", "radio");
 rb1.InputAttributes.Add("class", "radio");

答案 1 :(得分:0)

它成为我的案例研究之一。我正在努力在c#中为3.5开发一个Web服务器客户控件。这个客户控制由checkboxlist继承。我只用了一次javascript函数“ClickMe()”(这是明显的陈述)。当我在网页上放置多个这个控件的instatnce然后在运行时它通过同名“ClickMe()”函数为每个控件创建javascript函数。这是瓶颈。

最后,我决定为每个控件单独编写这个javascript函数,但是在运行时。为此,我将this.ID与“ClickMe()”联系起来。 (像这样.ID +“ClickMe()”)。我得到了解决方案。