Как установить 3 радиопереключателя с именем группы в репитере - PullRequest
0 голосов
/ 09 октября 2018

Мне нужно установить 3 разные группы переключателей в ретрансляторе.Использование свойства groupname для этого было недостаточно.Итак, после исследования я использую немного JS, и это работает.Моя проблема в том, когда я хочу реализовать более одной группы радиокнопок.Кто-нибудь может мне помочь?

Мой лучший подход:

CSHTML

<asp:Repeater runat="server" ID="repeaterImages" OnItemDataBound="repeaterImages_ItemDataBound">
  <ItemTemplate>
    <span>
          <asp:RadioButton runat="server" ID="rbLogoSeleccionado" Text='Logo 0' GroupName="nombreLogo" /><br />
          <asp:RadioButton runat="server" ID="rbLogoSeleccionadoApp" Text='Logo 1' GroupName="nombreLogoApp" /><br />
          <asp:RadioButton runat="server" ID="rbLogoSeleccionadoAppBlanco" Text='Logo 2' GroupName="nombreLogoAppBlanco" />
   </span>
 </ItemTemplate>
</asp:Repeater>

JS

<script>
    function SetUniqueRadioButton(nameregex, current) {

        for (i = 0; i < document.forms[0].elements.length; i++) {

            elm = document.forms[0].elements[i]

            if (elm.type == 'radio') {

                elm.checked = false;
            }
        }
        current.checked = true;
    }
</script>

CS

protected void repeaterImages_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    try
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            RadioButton rbLogoSeleccionado = (RadioButton)e.Item.FindControl("rbLogoSeleccionado");
            RadioButton rbLogoSeleccionadoApp = (RadioButton)e.Item.FindControl("rbLogoSeleccionadoApp");
            RadioButton rbLogoSeleccionadoAppBlanco = (RadioButton)e.Item.FindControl("rbLogoSeleccionadoAppBlanco");

            string script = "SetUniqueRadioButton('repeaterImages.*nombreLogo',this)";
            string scriptApp = "SetUniqueRadioButton('repeaterImages.*nombreLogoApp',this)";
            string scriptAppBlanco = "SetUniqueRadioButton('repeaterImages.*nombreLogoAppBlanco',this)";

            rbLogoSeleccionado.Attributes.Add("onclick", script);
            rbLogoSeleccionadoApp.Attributes.Add("onclick", scriptApp);
            rbLogoSeleccionadoAppBlanco.Attributes.Add("onclick", scriptAppBlanco);
        }
    }

    catch (Exception ex)
    {
        PIPEvo.Log.Log.RegistrarError(ex);
        throw;
    }
}

С помощью этого кода только 3 строки радиообмена, разделяющие поведение имени группы для всех из них ... (Я хочу поведение имени группы для строки ...)

1 Ответ

0 голосов
/ 09 октября 2018

Кусок торта.Докажите, как я новичок в JS.Я публикую решение, потому что это постоянная проблема в программировании asp, и эта ошибка известна.Рядом я не могу найти решение для какой-нибудь радиокнопки.

JS .

<script>
    function SetUniqueRadioButton(text, current) {
        for (i = 0; i < document.forms[0].elements.length; i++) {

            elm = document.forms[0].elements[i]

            if ((elm.type == 'radio') && (elm.value == text)) {
                elm.checked = false;
            }
        }
        current.checked = true;
    }
</script>

CS

     protected void repeaterImages_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            try
            {
                if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
                {
                    RadioButton rbLogoSeleccionado = (RadioButton)e.Item.FindControl("rbLogoSeleccionado");
                    RadioButton rbLogoSeleccionadoApp = (RadioButton)e.Item.FindControl("rbLogoSeleccionadoApp");
                    RadioButton rbLogoSeleccionadoAppBlanco = (RadioButton)e.Item.FindControl("rbLogoSeleccionadoAppBlanco");

                    string script = "SetUniqueRadioButton('rbLogoSeleccionado',this)";
                    string scriptApp = "SetUniqueRadioButton('rbLogoSeleccionadoApp',this)";
                    string scriptAppBlanco = "SetUniqueRadioButton('rbLogoSeleccionadoAppBlanco',this)";

                    rbLogoSeleccionado.Attributes.Add("onclick", script);
                    rbLogoSeleccionadoApp.Attributes.Add("onclick", scriptApp);
                    rbLogoSeleccionadoAppBlanco.Attributes.Add("onclick", scriptAppBlanco);
                }
            }

            catch (Exception ex)
            {
                PIPEvo.Log.Log.RegistrarError(ex);
                throw;
            }
        }

CSHTML

<asp:Repeater runat="server" ID="repeaterImages" OnItemDataBound="repeaterImages_ItemDataBound">
  <ItemTemplate>
    <span>
          <asp:RadioButton runat="server" ID="rbLogoSeleccionado" Text='Logo 0' GroupName="nombreLogo" /><br />
          <asp:RadioButton runat="server" ID="rbLogoSeleccionadoApp" Text='Logo 1' GroupName="nombreLogoApp" /><br />
          <asp:RadioButton runat="server" ID="rbLogoSeleccionadoAppBlanco" Text='Logo 2' GroupName="nombreLogoAppBlanco" />
   </span>
 </ItemTemplate>
</asp:Repeater>
...