【问题标题】:More than one Custome control are not working properly多个自定义控件无法正常工作
【发布时间】:2010-06-11 08:57:44
【问题描述】:

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

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

只有当我在网页上只放置了该控件的一个实例时,该控件才能完美运行。如果我放置多个控件实例,则它不起作用。

【问题讨论】:

  • 什么“不起作用”?您是否遇到了特定错误,是您的逻辑的一部分不起作用等等。如果没有任何问题的迹象,任何人都很难给您答案。

标签: asp.net controls


【解决方案1】:

为什么不使用单选按钮?您正在尝试重新创建已经存在的控件的功能。如果您愿意,您可以为它们设置外观,使其看起来像复选框,但大多数用户都知道单选按钮的作用以及它们的行为方式。
试试下面的。它将重新创建您在 cmets 中描述的行为。如果您需要为多个组执行此操作,则需要为每个组定义一个 currentSelection 变量,并为每个组定义一个不同的类,但可能有一个聪明的方法来解决这个问题。我会把它留给你来试验。也许像您已经完成的那样将它包装在一个控件中,并为每个控件生成 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");

【讨论】:

  • 非常感谢您的回复。丹尼尔,你是对的。但是一旦我们选择了任何选项,我们就不能在单选按钮中再次取消选中。正确的?我的意思是,如果我有两个单选按钮,最初都没有取消选中,一旦我选中(选择)其中任何一个,我就不能再次取消选中。我想要那个功能,我可以通过复选框来获得。
  • 这仍然可以通过在单选按钮的点击事件上放置一个javascript来完成。如果点击的单选按钮已经被选中,设置checked=false;使用 JQuery 选择器来识别单选按钮并将点击事件连接到函数。它应该是大约 5 行 JQuery。如果您不关心可读性,请写一行。
  • 谢谢丹尼尔给我你的好建议。这是单选按钮,但我严格想使用复选框列表控件。当然,您的建议将来会对我有所帮助。再次感谢您。
【解决方案2】:

它已成为我的案例研究之一。我正在努力在 c# 中为 3.5 开发一个 Web 服务器自定义控件。这个自定义控件由 checkboxlist 继承。我只放了一次javascript函数“ClickMe()”(这是显而易见的声明)。当我在网页上放置多个该控件的实例时,它会在运行时为每个控件创建具有相同名称的“ClickMe()”函数的 javascript 函数。这是瓶颈。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-30
    • 1970-01-01
    相关资源
    最近更新 更多