asp: RadioButtonList не устанавливает правильно выбранный элемент при загрузке - PullRequest
0 голосов
/ 13 апреля 2010

У меня есть этот код:

<asp:RadioButtonList ID="rblExpDate" runat="server" >
    <asp:ListItem Selected="True" Text="No expiration date"></asp:ListItem>
    <asp:ListItem Text="Expires on:"></asp:ListItem>
</asp:RadioButtonList>

, что я бы хотел, чтобы при загрузке страницы всегда отмечалась первая опция («без срока годности»). Однако, если пользователь помечает второй параметр и перезагружает его, выбирается второй вариант, хотя я делаю это при загрузке страницы:

rblExpDate.Items[0].Selected = true;
rblExpDate.SelectedIndex = 0;

Ценю вашу помощь!

Ответы [ 5 ]

1 голос
/ 06 декабря 2011

У меня была такая же проблема. Я обнаружил на странице PostBack, что мой radioButtonList все еще сохраняет все предыдущие ListItems selected property. По сути, последний элемент из RadioButtonList, который был ранее выбран, будет отображаться как элемент, выбранный на вашей странице. Итак, в вашем случае, когда пользователь выбирает 2-й элемент, этот элемент имеет свойство checked=checked, несмотря на ваш код для установки 1-го элемента в качестве выбранного. Посмотрите на свой источник просмотра страницы, вы увидите, как проверяются оба элемента ListItems.

Мое решение: на PagePostBack установите для другого значения ListItem Selected propety значение false, например:

rblExpDate.Items[0].Selected = true;
rblExpDate.Items[1].Selected = false;

Это удалит свойство Checked для 2-го элемента.

Надеюсь, это кому-нибудь поможет. Может быть, у кого-то есть способ получше.

1 голос
/ 19 апреля 2011

вызовите эту функцию при загрузке тега body

<body bottomMargin=0 leftMargin=0 topMargin=25 onload=aa() rightMargin=0>

под заголовком

<script language=Javascript>
function aa() {document.forms[0].item('rblExpDate')[1].disabled=true;}
</script>
0 голосов
/ 13 апреля 2010

Что наиболее вероятно происходит, так это то, что код, выполняемый в Page_Load, запускается первым, устанавливая нужный элемент. После этого происходит событие SelectedIndexChanged объекта RadioButtonList, которое получает выбранный элемент из ViewState, переопределяя действия кода. Вы должны отладить это, хотя.

0 голосов
/ 14 апреля 2010

Решение, которое я выбрал, находится в Javascript (mootools):

window.addEvent('domready', function() {
         $("rblExpDate_0").checked = true;
});

(я сдался на стороне .net)

спасибо за вашу помощь @Slavo и @Daniel Dyson.

0 голосов
/ 13 апреля 2010

Вы уверены, что ваш код не находится в проверке обратной передачи?

        if (!Page.IsPostBack)
        {
            rblExpDate.Items[0].Selected = true;
            rblExpDate.SelectedIndex = 0;
        }

Более того, это звучит как странное требование, которое не очень полезно. Зачем нужна опция, если вы всегда собираетесь ее переопределить?

...