2017-04-07 17 views
0

データグリッドにバインドされたデータテーブルがあり、行の順序を変更すると、探している文字列のインデックスが乱れてしまいます。DataGridの行を並べ替えた後にインデックスが正しくない

シリアル番号列のインデックスを取得します...これは、移動した後でも機能します。

Dim snIndex As Integer = asset_MasterDataGrid.Columns.[Single](Function(c) c.Header.ToString() = "Serial Num").DisplayIndex 

それから私は、私はその後、私はシリアル番号の列のセルの文字列をつかむ

Dim item As DataRowView = DirectCast(asset_MasterDataGrid.SelectedItem, DataRowView) 

をクリックてる行をキャストに指示します。

Dim sn As String = item.Row(snIndex) 

enter image description here もちろんこれは動作しません、と私再オーダー私のシリアル番号欄には言う...インデックス0をすることができたとき、それは資産のIDセルの文字列をつかみます。私はシリアル番号の列がどこであっても、クリックする行のシリアル番号を見つけようとしています。

この問題を解決する方法はありますか?

答えて

2

あなたはむしろインデックスよりもその名前でDataRowViewの列にアクセスすることができます。

Dim item As DataRowView = DirectCast(asset_MasterDataGrid.SelectedItem, DataRowView) 
Dim sn As String = item("Serial Num") 

シリアル番号の列の名前がわかっている場合は、これが機能するはずです。

+0

名前は機能しませんが、バインディングは:) – TonyW

0

データグリッドヘッダーをクリックして選択項目を並べ替えると、リンクされたデータの並べ替えが行われず、インデックスは同じになります。列インデックスは、これはあなたのシリアルであなたので明らか

var index = 0; 
for (var i = 0, i < asset_MasterDataGrid.Columns.Count; i++) 
    if (((DataColumn)asset_MasterDataGrid).ColumnName == "Serial Num") 
    { 
     index = i; 
     break; 
    } 

(C#)とこれを試してみてくださいWiki検索する

(ないあなたのDataTableの)あなたはそれのためにあなたのDataGridにWiki検索する必要があり、このシリアル番号を使用して値を取得する

+0

これは、なぜそれが起こっているか、いいです、私はそれがやっていると思ったことを伝えています...しかし、本当に私は問題を解決するのに役立ちません。 – TonyW

+0

私はすでにシリアル番号の列インデックスを持っていますが、それは問題ではありません。 SN列を動かした後、正しい文字列を取得する方法はまだ分かりません。 – TonyW

関連する問題