Более чем один пользовательский контроль не работает должным образом - PullRequest
1 голос
/ 11 июня 2010

Я разработал пользовательский элемент управления ASP.Net Server в C # для 3.5. с именем «myCheckBoxList», унаследованный от веб-элемента управления CheckBoxList.

Работать очень просто. Это просто работает как две опции флажка кнопки. Я взял CheckBoxList, который всегда показывает два флажка. Работа такова, что, когда один флажок установлен, другой должен быть отключен или наоборот.

Этот элемент управления отлично работает, только когда я разместил только один экземпляр этого элемента управления на веб-странице. Если я размещу более одного экземпляра элемента управления, он не будет работать.

Ответы [ 2 ]

0 голосов
/ 11 июня 2010

Это стало одним из примеров для меня.Я работал над созданием обычного контроля веб-сервера в C # для 3.5.Этот привычный контроль унаследован от checkboxlist.Я поместил функцию JavaScript "ClickMe ()" только один раз (это очевидное утверждение).Когда я помещаю экземпляр этого элемента управления более чем на один элемент на веб-странице, то во время выполнения он создает функцию javascript для каждого элемента управления с тем же именем функции ClickMe ().это было узким местом.

Наконец, я решил написать эту функцию javascript отдельно для каждого элемента управления, но во время выполнения.для этого я констатирую this.ID с помощью «ClickMe ()».(Вот так this.ID + "ClickMe ()").И я получил решение.

0 голосов
/ 11 июня 2010

Почему бы не использовать радио-кнопки?Вы пытаетесь воссоздать функциональность уже существующих элементов управления.Вы можете сделать их похожими на флажки, но большинство пользователей знают, что делают переключатели и как они должны себя вести.
Попробуйте следующее.Он воссоздает поведение, описанное вами в ваших комментариях.Если вам нужно сделать это для нескольких групп, для этого потребуется переменная 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" />

CodeBehind:

 rb.InputAttributes.Add("class", "radio");
 rb1.InputAttributes.Add("class", "radio");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...