про радиобаттоны - как сделать эксклюзивными?
От: la Jazz Россия  
Дата: 06.05.09 14:04
Оценка:
добрый вечер

не понимаю, что делаю неправильно, весь мсдн перекопал, уже всю голову поломал, помогите, люди добрые

есть GridView (текст его описания ниже), в нем в одном из столбцов — радиобаттоны. в этот грид биндядтся данные из DataSet.
Как сделать чтобы эти баттоны были эксклюзивные (при checked одного с других checked снимается)??

Сейчас сделал через PostBack и обработку OnCheckedChanged, в которой бегу по всем строкам и снимаю checked, но, во-первых, долго, во-вторых, страница "мыргает", в-третьих это как то криво..

И GroupName почему -то не помогает ((((

Как это реализовать?? должно же быть как то просто по идее....
Спасибо

ASPX:
<div>
        <asp:GridView
        ID="gvLines"
        runat="server"
        DataKeyNames="CURRENT, ID, NAME, USER"
        ShowHeader="false"
        AutoGenerateColumns="False"
        GridLines="None"         
        UseAccessibleHeader="False">
                <Columns>
                        <asp:TemplateField HeaderText="Use">
                            <ItemTemplate>
                                <asp:RadioButton ID="rbLine" GroupName="rbLines" 
                                runat="server" AutoPostBack="true" 
                                Checked='<% #(bool)Eval("CURRENT") %>' 
                                OnCheckedChanged="onRBCheckedChanged" />
                            </ItemTemplate>
                            <ItemStyle Width="20px" HorizontalAlign="center" />
                        </asp:TemplateField>
                        <asp:BoundField DataField="NAME" HeaderText="Name" HtmlEncode="False">
                            <ItemStyle Width="100%" Wrap="False" />
                        </asp:BoundField>                        
                        <asp:BoundField  Visible="false" DataField="USER" HeaderText="User" HtmlEncode="true">
                            <ItemStyle  Width="0" Wrap="False" />
                        </asp:BoundField>
                        <asp:BoundField DataField="ID" HeaderText="ID" HtmlEncode="False" Visible="False">
                            <ItemStyle Width="100%" Wrap="False" />
                        </asp:BoundField>
                </Columns>
        </asp:GridView>
</div>
Re: про радиобаттоны - как сделать эксклюзивными?
От: Аноним  
Дата: 06.05.09 14:21
Оценка:
Здравствуйте, la Jazz, Вы писали:

Ну дык при смене checked у тебя идет постбек и все аннулируется и заново приезжает та же форма. Нужно ли реально тебе обрабатывать изменение радиобатона на сервере? Если да то нужно обновлять DataSource
Re[2]: про радиобаттоны - как сделать эксклюзивными?
От: la Jazz Россия  
Дата: 06.05.09 14:28
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Ну дык при смене checked у тебя идет постбек и все аннулируется и заново приезжает та же форма. Нужно ли реально тебе обрабатывать изменение радиобатона на сервере? Если да то нужно обновлять DataSource


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

сейчас это реализовано через OnCheckedChanged эвент (который работает через постбэк), в обработчике которого я пробегаю по всем радиобаттонам и снимаю отметку с ненужных (((
Re[3]: про радиобаттоны - как сделать эксклюзивными?
От: Аноним  
Дата: 06.05.09 14:50
Оценка:
Здравствуйте, la Jazz, Вы писали:

Ну тогда убери OnCheckedChanged и постбек и все дожно работать
Re[4]: про радиобаттоны - как сделать эксклюзивными?
От: la Jazz Россия  
Дата: 06.05.09 14:52
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Ну тогда убери OnCheckedChanged и постбек и все дожно работать


да если бы работало без OnCheckedChanged и постбека, я бы тогда OnCheckedChanged и постбек ен писал и сюда бы вопрос не задавал... ((
Re[5]: про радиобаттоны - как сделать эксклюзивными?
От: Аноним  
Дата: 06.05.09 14:57
Оценка:
Здравствуйте, la Jazz, Вы писали:

LJ>Здравствуйте, Аноним, Вы писали:


А>>Ну тогда убери OnCheckedChanged и постбек и все дожно работать


LJ>да если бы работало без OnCheckedChanged и постбека, я бы тогда OnCheckedChanged и постбек ен писал и сюда бы вопрос не задавал... ((


А View Source что показывает?
Re[6]: про радиобаттоны - как сделать эксклюзивными?
От: la Jazz Россия  
Дата: 06.05.09 15:01
Оценка:
Здравствуйте, Аноним, Вы писали:
А>А View Source что показывает?

вопроса... не понял... я только месяц со всем этим разбираюсь, поэтому...
что это и как это посмотреть?
Re[7]: про радиобаттоны - как сделать эксклюзивными?
От: Аноним  
Дата: 06.05.09 15:06
Оценка:
Здравствуйте, la Jazz, Вы писали:

LJ>Здравствуйте, Аноним, Вы писали:

А>>А View Source что показывает?

LJ>вопроса... не понял... я только месяц со всем этим разбираюсь, поэтому...

LJ>что это и как это посмотреть?

В броузере ViewSource что бы посмотреть выходной HTML.
Re[6]: про радиобаттоны - как сделать эксклюзивными?
От: la Jazz Россия  
Дата: 06.05.09 15:07
Оценка:
Здравствуйте, Аноним, Вы писали:
А>А View Source что показывает?

понял, что имелось ввиду

показывает вот что (это без постбэка и обработчика, ), группы нету, несмотря на GroupName в aspx:


    <table cellspacing="0" border="0" id="gvLines" style="border-collapse:collapse;">
        <tr>
            <td align="center" style="width:20px;">
                                <input id="gvLines_ctl02_rbLine" type="radio" name="gvLines$ctl02$rbLines" value="rbLine" />
                            </td><td style="width:100%;white-space:nowrap;">1110 (11)</td><td style="width:100%;white-space:nowrap;">False</td>
        </tr><tr>
            <td align="center" style="width:20px;">
                                <input id="gvLines_ctl03_rbLine" type="radio" name="gvLines$ctl03$rbLines" value="rbLine" />
                            </td><td style="width:100%;white-space:nowrap;">Another One line</td><td style="width:100%;white-space:nowrap;">False</td>
        </tr><tr>
            <td align="center" style="width:20px;">
                                <input id="gvLines_ctl04_rbLine" type="radio" name="gvLines$ctl04$rbLines" value="rbLine" />
                            </td><td style="width:100%;white-space:nowrap;">18 (18)</td><td style="width:100%;white-space:nowrap;">False</td>
        </tr><tr>
            <td align="center" style="width:20px;">
                                <input id="gvLines_ctl05_rbLine" type="radio" name="gvLines$ctl05$rbLines" value="rbLine" checked="checked" />
                            </td><td style="width:100%;white-space:nowrap;">Second Line</td><td style="width:100%;white-space:nowrap;">True</td>
        </tr>
    </table>
Re[7]: про радиобаттоны - как сделать эксклюзивными?
От: Аноним  
Дата: 06.05.09 15:13
Оценка:
Здравствуйте, la Jazz, Вы писали:

LJ>Здравствуйте, Аноним, Вы писали:

А>>А View Source что показывает?

LJ>понял, что имелось ввиду


LJ>показывает вот что (это без постбэка и обработчика, ), группы нету, несмотря на GroupName в aspx:



LJ>
LJ>    <table cellspacing="0" border="0" id="gvLines" style="border-collapse:collapse;">
LJ>        <tr>
LJ>            <td align="center" style="width:20px;">
LJ>                                <input id="gvLines_ctl02_rbLine" type="radio" name="gvLines$ctl02$rbLines" value="rbLine" />
LJ>                            </td><td style="width:100%;white-space:nowrap;">1110 (11)</td><td style="width:100%;white-space:nowrap;">False</td>
LJ>        </tr><tr>
LJ>            <td align="center" style="width:20px;">
LJ>                                <input id="gvLines_ctl03_rbLine" type="radio" name="gvLines$ctl03$rbLines" value="rbLine" />
LJ>                            </td><td style="width:100%;white-space:nowrap;">Another One line</td><td style="width:100%;white-space:nowrap;">False</td>
LJ>        </tr><tr>
LJ>            <td align="center" style="width:20px;">
LJ>                                <input id="gvLines_ctl04_rbLine" type="radio" name="gvLines$ctl04$rbLines" value="rbLine" />
LJ>                            </td><td style="width:100%;white-space:nowrap;">18 (18)</td><td style="width:100%;white-space:nowrap;">False</td>
LJ>        </tr><tr>
LJ>            <td align="center" style="width:20px;">
LJ>                                <input id="gvLines_ctl05_rbLine" type="radio" name="gvLines$ctl05$rbLines" value="rbLine" checked="checked" />
LJ>                            </td><td style="width:100%;white-space:nowrap;">Second Line</td><td style="width:100%;white-space:nowrap;">True</td>
LJ>        </tr>
LJ>    </table>
LJ>


Атрибут name это и есть группа в идеале должно быть так:
        <input id="RadioButton1" type="radio" name="1" value="RadioButton1" checked="checked" />
        <input id="RadioButton2" type="radio" name="1" value="RadioButton2" /><br />

Как видно атрибут name должен быть одинаковым для всех радиобутонов.
Re[8]: про радиобаттоны - как сделать эксклюзивными?
От: la Jazz Россия  
Дата: 06.05.09 15:15
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Как видно атрибут name должен быть одинаковым для всех радиобутонов.

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

вот вопрос — как это сделать так чтобы работало?...))
Re[9]: про радиобаттоны - как сделать эксклюзивными?
От: Аноним  
Дата: 06.05.09 15:32
Оценка: +1
Здравствуйте, la Jazz, Вы писали:
Можна как вариант попробывать убрать runat="server" у радиобутона или использовать HTML версию контрола. Или покопать где он ClientID приписывает к name атрибуту.
Re: про радиобаттоны - как сделать эксклюзивными?
От: 1stein Украина  
Дата: 06.05.09 18:23
Оценка: 6 (1)
Adding a GridView Column of Radio Buttons
Will code C# for food
Re[2]: про радиобаттоны - как сделать эксклюзивными?
От: la Jazz Россия  
Дата: 07.05.09 10:24
Оценка:
Здравствуйте, 1stein, Вы писали:
1>Adding a GridView Column of Radio Buttons

круто! это то что надо!
один рекомендуемый там путь я реализовал, как говорил выше, а второй не смог из-за криворукости оказывается ))))

спасибо большое за статью!
Re[9]: про радиобаттоны - как сделать эксклюзивными?
От: Starina  
Дата: 10.05.09 13:45
Оценка:
Здравствуйте, la Jazz, Вы писали:

LJ>Здравствуйте, Аноним, Вы писали:

А>>Как видно атрибут name должен быть одинаковым для всех радиобутонов.

LJ>ага, почитал как раз в мсдн как должно быть

LJ>но это ведь генерится автоматически
LJ>и генерится оно неправильно, не так как надо. почему то

LJ>вот вопрос — как это сделать так чтобы работало?...))


Когда-то давно я с таким сталкивался. Не помню точно.
А если просто при repeater DataBound взять контрол
var a = e.Item.FindControl("myCheckBox_name") as CheckBox

и выстаивть ему GroupName?
... << RSDN@Home 1.2.0 alpha 4 rev. 1136>>
Re[9]: про радиобаттоны - как сделать эксклюзивными?
От: Starina  
Дата: 10.05.09 13:45
Оценка:
Здравствуйте, la Jazz, Вы писали:

LJ>Здравствуйте, Аноним, Вы писали:

А>>Как видно атрибут name должен быть одинаковым для всех радиобутонов.

LJ>ага, почитал как раз в мсдн как должно быть

LJ>но это ведь генерится автоматически
LJ>и генерится оно неправильно, не так как надо. почему то

LJ>вот вопрос — как это сделать так чтобы работало?...))


Когда-то давно я с таким сталкивался. Не помню точно.
А если просто при repeater DataBound взять контрол
var a = e.Item.FindControl("myCheckBox_name") as CheckBox

и выстаивть ему GroupName?
... << RSDN@Home 1.2.0 alpha 4 rev. 1136>>
Re[10]: про радиобаттоны - как сделать эксклюзивными?
От: Starina  
Дата: 10.05.09 13:59
Оценка:
S>Когда-то давно я с таким сталкивался. Не помню точно.
S>А если просто при repeater DataBound взять контрол
S>var a = e.Item.FindControl("myCheckBox_name") as CheckBox

S>и выстаивть ему GroupName?


Соврал. Делал как тут
Автор: 1stein
Дата: 06.05.09
описано через литералы.
... << RSDN@Home 1.2.0 alpha 4 rev. 1136>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.