2

現在、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>

ただし、グリッド行の適切なボタンをクリックしてもイベントは発生せず、基本的にサーバーへのポストバックは行われません。私が見つけた解決策は、ClientSettings に " " を追加することですEnablePostBackOnRowClick=trueが、これにより、行をクリックするたびにポストバックが発生し、実際には望ましくありません。

これを実現するためのより良い方法はありますか、それとも問題の可能性があるヒントを誰かが持っていますか??

どうも

4

5 に答える 5

2

クライアントの「OnCommand」イベントを処理するか、より適切にはクライアントの「RowDataBound」コマンドを使用する必要があります。RowDataBound コマンドで、rad ボタンを見つけて、それにイベントを添付できます。

これを行う唯一の方法は、ボタン自体からクライアントの「onclicking」イベントを処理することです。

OnCommand および Row DataBound へのバインドの例:
<ClientSettings> <ClientEvents OnCommand="Grid_Command" OnRowDataBound="Grid_RowDataBound" /> </ClientSettings> 次に、rad コード ブロックでラップされた JavaScript で、次のメソッドを使用します。

<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
    // ... //
 }

`

于 2011-04-08T12:51:12.293 に答える
2

Telerikフォーラムからの回答を考えると、これは不可能だと思われます。

于 2009-10-12T14:40:58.047 に答える
0

RegisterWithScriptManager="false" これもうまくいくかもしれません..

于 2014-02-15T07:00:31.710 に答える
0

テレリック コントロールでも同じ問題がありました。新しい名前でコントロールをゼロから再作成し、構造を再構築することで、この問題を解決しました。

それが役に立てば幸い

于 2011-01-19T17:11:57.207 に答える