#c# #asp.net #radio-button #selected
#c# #asp.net #переключатель #выбран
Вопрос:
В настоящее время я передаю некоторые значения в один из моих файлов ascx.cs, и он отображает определенные переключатели в зависимости от передаваемого значения. Переключатели создаются в формате .ascx:
<asp:RadioButton ID="length5yr" GroupName="SubLength" runat="server" Visible ="false"
/>
<asp:label runat="server" id="Label5yr" Visible="false" style="width: 300px">
</asp:label>
<asp:RadioButton ID="length3yr" GroupName="SubLength" runat="server" Visible ="false"
/>
<asp:label runat="server" id="Label3yr" Visible="false" style="width: 300px">
</asp:label>
<asp:RadioButton ID="length2yr" GroupName="SubLength" runat="server" Visible ="false"
/>
<asp:label runat="server" id="Labelyr2" Visible="false" style="width: 300px">
</asp:label>
<asp:RadioButton ID="length1yr" GroupName="SubLength" runat="server" Visible ="false"
/>
<asp:label runat="server" id="Label1yr" Visible="false" style="width: 300px">
</asp:label>
<asp:RadioButton ID="lengthQuarterly" GroupName="SubLength" runat="server" Visible ="false"
/>
<asp:label runat="server" id="labelQuarterly" Visible="false" style="width: 300px">
</asp:label>
<asp:RadioButton ID="lengthMonthly" GroupName="SubLength" runat="server" Visible ="false"
/>
<asp:label runat="server" id="labelMonthly" Visible="false" style="width: 300px">
</asp:label>
Я хочу, чтобы был отмечен любой переключатель, который в конечном итоге будет отображаться первым / верхним. Мне удалось установить флажок последнего переключателя (что в любом случае также вызывает у меня другие проблемы) — но как я могу установить флажок для этого верхнего переключателя!?
Это код для определения того, какой переключатель отображается — я показал только один из вариантов, просто чтобы сделать код немного более удобным для чтения.
foreach (Dictionary<string, string> d in orderOptions)
{
if (d["length"] == "one")
{
length1yr.Visible = true;
price1yr = d["price"];
rate1yr = d["rate"];
issues1yr = d["issues"];
premium1yr = d["premium"];
Label1yr.Text = d["description"] "<br><br>";
Label1yr.Visible = true;
SubLength1yr = "1 year";
}
Комментарии:
1. Как вы создаете переключатели? Динамически или они все всегда есть и просто скрыты на основе некоторых критериев?
2. АХ, они всегда там и просто скрыты на основе критериев.
3. Вам нужно решение на стороне сервера или клиента? Или это не имеет значения?
4. Я не думаю, что это действительно имеет слишком большое значение — пока это выполняет свою работу, и я получаю что-то от этого, я согласен с решением.
5. Можете ли вы обновить вопрос, включив в него HTML-код, который он выдает, а также код, который вы используете, чтобы определить, какие переключатели показывать?
Ответ №1:
Для решения на стороне сервера самым простым было бы перебрать список RadioButton
и использовать какой-нибудь простой LINQ для выбора первой видимой кнопки.
Что-то вроде:
var buttons = new []{length5yr, ...};
var firstVisibleButton = buttons.Where(b=>b.Visible).First();
firstVisibleButton.Checked = true;
Вероятно, вышесказанное является скорее псевдокодом, чем чем-либо еще, но без полного примера кода это все, что я могу сделать. Я уверен, что вы можете разобраться в деталях. Приведенный выше код должен был бы выполняться после того, как вы скрыли / показали RadioButton
.
Вероятно, мне следует указать, что создаваемый вами список (кнопки) должен соответствовать порядку отображения кнопок, чтобы это работало должным образом.
Комментарии:
1. Проблема с этим заключается в том, что когда я выбираю что-то под первым переключателем, оно не передает правильные данные на следующую страницу :/ Он всегда передает данные, прикрепленные к отображаемому «первому» переключателю.
2. О каких данных мы здесь говорим?
3. Неопределенный — я знаю. Существует метод, который запускается, когда кто-то нажимает кнопку «Отправить», которая находится на той же странице, что и эти переключатели. В зависимости от того, какой переключатель выбран, он передает определенную информацию. Итак, когда кнопка нажата, если radiobutton1.установлен флажок, она устанавливает определенные значения для переменных x, y и z, и именно они в конечном итоге передаются. если установлен флажок radiobutton2., эти значения будут другими. В этом случае переключатель 2 (например) установлен, но он передает значения так, как если бы переключатель 1 все еще был выбран.
4. Я немного устал от ASP.net но, похоже, что вы выполняете часть этой работы «слишком рано» в цикле страницы ASP, и состояние просмотра кнопок еще не было применено или что-то в этом роде. Если вам нужна дополнительная помощь здесь, возможно, вам придется опубликовать небольшой пример кода с большим количеством кода (не используйте свой реальный код). Создание этого меньшего примера кода также может помочь вам разобраться в этом, попробовав меньшую область видимости.