RadGrid не запускает обратную передачу на события ItemCommand - PullRequest
2 голосов
/ 12 октября 2009

В настоящее время я оцениваю некоторые элементы управления RAD от Telerik, прямо сейчас я экспериментирую с RadGrid.

Итак, у меня есть контроль сетки и включена привязка на стороне клиента для поддержки Ajax. Я создал соответствующий веб-сервис WCF для извлечения данных и т. Д. Все работает очень хорошо, включая пейджинг и т. Д. Теперь я хотел иметь столбец кнопок для удаления некоторых элементов. Я зарегистрировал событие сетки OnItemCommand и соответствующим образом реализовал его на стороне сервера. Мой ASPx-код выглядит так:

<telerik:RadGrid runat="server" ID="RadGrid1" AllowPaging="True" AllowSorting="True"
    AutoGenerateColumns="False" GridLines="None"
    OnItemCommand="RadGrid1_ItemCommand">
    <MasterTableView DataKeyNames="Id" ClientDataKeyNames="Id">
        <Columns>
            <telerik:GridBoundColumn DataField="Firstname" HeaderText="Firstname" DataType="System.String">
            </telerik:GridBoundColumn>
            <telerik:GridBoundColumn DataField="Lastname" HeaderText="Lastname" DataType="System.String">
            </telerik:GridBoundColumn>
            <telerik:GridBoundColumn DataField="Age" HeaderText="Age" DataType="System.Int32">
            </telerik:GridBoundColumn>
            <telerik:GridButtonColumn CommandName="Delete" Text="Delete" UniqueName="DeleteColumn"
                ButtonType="ImageButton">
            </telerik:GridButtonColumn>
        </Columns>
        <PagerStyle Mode="Slider" />
    </MasterTableView>
    <ClientSettings>
        <DataBinding SelectMethod="GetSampleData" Location="Webservice/GridData.svc" SortParameterType="String">
        </DataBinding>
    </ClientSettings>
</telerik:RadGrid>

Однако при нажатии на соответствующую кнопку в строке сетки событие не запускается, по сути, никакой обратной передачи на сервер не производится. Решение, которое я нашел, заключается в добавлении «EnablePostBackOnRowClick=true» к ClientSettings, но это приведет к обратной передаче при каждом щелчке по строке, что на самом деле нежелательно.

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

Thx

Ответы [ 5 ]

2 голосов
/ 08 апреля 2011

вам нужно обработать клиентское событие "OnCommand" или, что более правильно, использовать клиентскую команду "RowDataBound". В команде RowDataBound вы можете найти свою кнопку Rad и прикрепить к ней событие.

Единственный другой способ сделать это - обработать событие "onclicking" клиента от самой кнопки.

Пример привязки к OnCommand и Row DataBound:
<ClientSettings> <ClientEvents OnCommand="Grid_Command" OnRowDataBound="Grid_RowDataBound" /> </ClientSettings> тогда в вашем javascript, заключенном в блок кода rad, есть следующие методы:

<script type="javascript">
function Grid_RowDataBound(sender, args) {
    var item = args.get_item();
    var data = args.get_dataItem();
    var btn = $find('DeleteColumn');
    btn.add_clicking(delegate); // where delegate is the function you provide for the click
    // ... //
 }

`

2 голосов
/ 12 октября 2009

Насколько это кажется невозможным, учитывая ответ с форума Telerik .

1 голос
/ 30 августа 2013

Я понимаю, что это древний, но он все еще показывает высокие результаты в Google. Теперь есть решение этой проблемы, возможно, и другие ...

Вы можете получить обратную передачу, используя шаблон столбца

<telerik:GridTemplateColumn UniqueName="myuniquename">
<ItemTemplate>
    <telerik:RadButton ID="RadButton1" runat="server" ButtonType="StandardButton" AutoPostBack="true" CommandName="MyCommand" UseSubmitBehavior="false" Text="Button Text" />
</ItemTemplate>
</telerik:GridTemplateColumn>

Хотя я не уверен, что вам нужно свойство UseSubmitBehavior.

0 голосов
/ 15 февраля 2014

RegisterWithScriptManager = "false", это может также работать ..

0 голосов
/ 19 января 2011

У меня была такая же проблема с элементами управления telerik. Я решил эту проблему, воссоздав Control с нуля с новым именем, а затем перестроив свою структуру.

Надеюсь, это поможет

...