2016-09-21 17 views
0

私の人生にとっては、これを理解できないようです。私は長いDataGridView(MultiSelectを許可しない)を持ち、ユーザーがデータの変更をコミットすると、グリッドからのデータがパージされ、再描画されます(変更は複数の行に影響するため、これはより単純なアプローチでした)。しかし、プログラムで行を選択しようとすると、DataGridViewの現在のセルインデックスに関連付けられた配列からデータを表示するために使用するDataGridView.SelectionChangedイベントも発生しません。 doMagicStuffを実行すると、間違ったインデックス(特にインデックス0)の値が表示されます。DataGridViewの行をプログラムで選択し、DataGridView.SelectionChangedイベントをトリガする方法はありますか?

private void doMagicStuff() 
{ 
    int selRow = myDGV.CurrentCell.RowIndex; 
    myDGV.Rows.Clear(); 

    /*Perform Task, Redraw data*/ 
    myDGV.CurrentCell = myDGV[selRow, 0]; 
} 
private void myDGV_SelectionChanged(object sender, EventArgs e) 
{ 
    Label1.Text = myDisplayValue1[myDGV.CurrentCell.RowIndex]; 
    Label2.Text = myDisplayValue2[myDGV.CurrentCell.RowIndex]; 
    TextBox1.Text = myEditValue1[myDGV.CurrentCell.RowIndex]; 
    TextBox2.Text = myEditValue2[myDGV.CurrentCell.RowIndex]; 
} 
+0

コードから直接SelectionChangedイベントを呼び出すことができます –

+0

Thereあなたが 'foreach(DataGridViewRow row in dgvReps.SelectedRows)'を使う必要がある場合には、現在選択されている行をdatagridviewから取得する方法がたくさんあるので、そこから 'row.Cells [cell Index欲しい] .V alue.ToString(); 'グーグル検索に文字通りそこにたくさんの作業例があります – MethodMan

+0

@MethodMan問題は、私が選択した行がわからないということではなく、問題は再選択するときですSelectionChangedイベントが発生していないため、フォーム上のさまざまなフィールドに誤ったデータが表示されます。 – Dan

答えて

0

することを確認してください、あなたのクライアントの設定とOnSelectedIndexChangedはそうのように設定されている:(ASP.NET AJAX)

.aspxページ

<telerik:RadGrid ID="Grid1" runat="server" OnSelectedIndexChanged="Grid1_SelectedIndexChanged" OnItemDataBound="Grid1_ItemDataBound" OnPreRender="Grid1_PreRender"> 
      <ClientSettings EnablePostBackOnRowClick="true"> 
         <Selecting AllowRowSelect="true"></Selecting> 
      </ClientSettings> 
</telerik:RadGrid> 


aspx.csページ

protected void Grid1_SelectedIndexChanged(object sender, EventArgs e) 
    { 

     string value = null; 
     foreach(GridDataItem item in Grid1.SelectedItems) 
     { 
      //column name is in doub quotes 
      value = item["Name"].Text; 
     } 
    } 
+0

で始まるので、OPがTelerikを使用していると仮定しているので、これは完全に間違っています:RadGrid ..?これは私の意見では本当に質問に答えるものではありません。 – MethodMan

+0

彼はTelerikを使わずにDataGridViewで何かをすることができます – MethodMan

0

ボタンをクリックしてフォームにクリックすると、選択した値がテストされます。 DataGridViewの中...ダブルそのボタンをクリックし、あなたが4列と4つのテキストボックスを持っているならば、あなただけ続くforeachループ内textbox.Text値のすべてを割り当てますもあり

foreach (DataGridViewRow row in myDGV.SelectedRows) 
{ 
    Label1.Text = //This should be hard coded the only thing that should change dynamically is the TextBox Values 
    Label2.Text = //This should be hard coded the only thing that should change dynamically is the TextBox Values 
    TextBox1.Text = row.Cells[0].Value.ToString();//change the 0 or 1 to fit your column Index position 
    TextBox2.Text = row.Cells[2].Value.ToString(); 
} 

にこのコードを貼り付けパターンを追加し、インデックスを1つ増やしてください。2つのテキストボックスは行を意味します.Cells [0]は最初の列の行です.Cells [1]は2番目の列です...

関連する問題