2012-01-15 10 views
14

クライアント側で選択したグリッド行のKeyField値を取得しようとしています。ASPXGridView ClientSideEvents選択した行の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 

質問:

私は以下のことを試してみて、さまざまな結果を得るために使用されますです:どのように私はgathすることができますEr KeyFieldコールバックまたはポストバックなしでクライアントのRowClickイベントで現在選択されている行の値(前回ではなく)

答えて

17

方法#2及び#3

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

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

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

クライアント側ASPxClientGridView.SelectionChangedイベントを処理します。

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

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

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

ありがとうございますが、これは私が期待してい答えではありません。私はどのようにClientside RowClickイベントで新たに選択した行のKeyfield値を集めることができますか?そして、ASPxClientGridView.GetSelectedKeysOnPage [0]は、選択が変更されたときに変更されます。 – DortGen

+1

私の解決策を試しましたか?それは何の結果ですか? – Mikhail

+0

あなたはMikhailのソリューションを使用したい場合、 SelectionChangedイベントの使用に関する問題:ユーザーがソートまたはフィルターをかけたとき。格納されたキーは更新されません(SelectionChangedイベントはトリガされません) – kite

0
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); 
} 
1

どのように3つのステップで簡単に:

は、パラメータとして「e.visibleIndex」プロパティを渡します。私の場合は

は、私は、ユーザーが行をクリックしたときに... 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()); 
    } 
    
+0

ここには若干の遅延があります。遅延を回避するにはどうしたらいいですか? – IyaTaisho

関連する問題