web-dev-qa-db-ja.com

ASPXGridView ClientSideEvents選択された行のKeyField値を取得する方法

クライアント側で選択されたグリッド行のKeyField値を取得しようとしています。

私は以下を試して、さまざまな結果を得ていました:

方法#1

<ClientSideEvents RowClick="function(s, e) {var key= grid.GetSelectedKeysOnPage()[0];}" />
//This gives previous selected rows value everytime

方法#2

<ClientSideEvents RowClick="function(s, e) { grid.GetRowValues(grid.GetFocusedRowIndex(), 'MyKeyFieldName', OnGetRowValues); }" />
//This gives previous selected row and also gives an error: "A primary key field specified via the KeyFieldName property is not found in the underlying data source. Make sure.. blabla" But the MyKeyFieldName is true and i dont want to make a callback, i dont want to use this method!

方法#3

<ClientSideEvents RowClick="function(s, e) { grid.GetRowValues(e.visibleIndex, 'MyKeyFieldName', OnGetRowValues); }">
//This gives the same result with Method #2

問題は、コールバックやポストバックなしでクライアントのRowClickイベントで(前ではなく)現在選択されている行のKeyField値を収集するにはどうすればよいですか?

14
DortGen

方法#2および#3

これらのメソッドは両方とも、サーバーへのコールバックを必要とします。

行選択操作に必要なASPxGridView.KeyFieldNameプロパティが指定されていることを確認してください。

コールバックまたはポストバックなしで、選択した行@クライアントのKeyField値をどのように収集できますか?

クライアント側の処理ASPxClientGridView.SelectionChangedイベント;

e.isSelected」プロパティで選択されたばかりの行を特定します。

クライアント側のASPxClientGridView.GetRowKeyメソッドを介して行のkeyValueを決定します。

e.visibleIndex”プロパティをパラメーターとして渡します。

<ClientSideEvents SelectionChanged="function(s, e) {
    if (e.isSelected) {
        var key = s.GetRowKey(e.visibleIndex);
        alert('Last Key = ' + key);
    }
}" />
18
Mikhail

3つの簡単なステップで行う方法。

私の場合、ユーザーが行をクリックしたときにASPxGridViewからフィールド( 'ID')のコンテンツを取得したいのですが...

  1. 行クリック用のClientSideEventを作成し、「RowClick(s、e);」を配置します関数内。
  2. 以下に示すように、イベントが呼び出す実際の関数を作成します-これがトリッキーな部分です。 FOCUSEDインデックスであるため、GetFocusedRowIndex()を使用してインデックスを取得しないでください。 e.visibleIndexを使用する

    function RowClick(s, e) {
        // Do callback to get the row data for 'ID' using current row.
        MyAspxGridView.GetRowValues(e.visibleIndex, 'ID', OnGetRowId);
    }
    
  3. コールバックを作成して、必要なフィールドを取得します。 「ID」を取得しています。

    function OnGetRowId(idValue) {
        alert('ID: ' + idValue.toString());
    }
    
1
GWB_CODE_MAD
function OnbtnOkClick(s, e) {
    grid.GetRowValues(grid.GetFocusedRowIndex(), 'FieldName1;FieldName2', OnGetRowValues);
}

function OnGetRowValues(values) {
    var fName1 = values[0];
    var fName2 = values[1];
    txt1.SetText(fName1);
}
0
sms247