簡體   English   中英

RadGrid不會在ItemCommand事件上觸發回發

[英]RadGrid not firing postback on ItemCommand events

我目前正在評估Telerik的一些RAD控件,而現在我正在嘗試使用RadGrid。

因此,我擁有網格控件並啟用了具有Ajax支持的客戶端綁定。 我創建了一個適當的WCF Web服務來獲取數據等。一切工作都很好,包括分頁等。現在,我希望有一個用於刪除某些項目的按鈕列。 我注冊了網格的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中,但這會導致對行的每次單擊進行回發,這並不是真正需要的。

有沒有更好的方法來實現這一目標,或者有人暗示可能是什么問題?

謝謝

從Telerik論壇的答案看這似乎是不可能的。

您需要處理客戶端“ 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
    // ... //
 }

`

我知道這很古老,但在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”屬性。

RegisterWithScriptManager =“ false”可能也可以。

我在使用telerik控件時遇到了同樣的問題。 我通過使用新名稱從零重新創建控件,然后重建我的結構,解決了這個問題。

希望能幫助到你

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM