- PR -

DataGridに表示されている文字列の検索

1
投稿者投稿内容
さすけ
常連さん
会議室デビュー日: 2004/04/10
投稿数: 38
投稿日時: 2004-04-10 00:39
お世話になります。

DataGridに表示されているレコードの中からある文字列を検索し、
最初に見つかった行をレコード全体ハイライトさせたい、
次に検索を行うと前回のハイライトが消え、新たに検索でHITした
レコード全体をハイライトさせる。

IEの【編集】メニューの【このページの検索】で表示される
検索のウィンドウを利用して上記の検索をさせたい。
上方向、下方向の検索も行いたい

以上
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2004-04-10 09:30
諸農です。

DataSourceに何を使っているのかわかりませんが、
DataView等から順に先頭から検索してヒットしたら、
CurrentRowIndexに表示したいインデックスをセット
すればいいと思います。

引用:

IEの【編集】メニューの【このページの検索】で表示される
検索のウィンドウを利用して上記の検索をさせたい。
上方向、下方向の検索も行いたい



そのようなフォームを作成して、自前で実装すれば可能です。


_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
さすけ
常連さん
会議室デビュー日: 2004/04/10
投稿数: 38
投稿日時: 2004-04-10 10:00
ご回答どうもありがとうございました。

下記のサンプルをそのまま利用させて頂き、拡張しています。
http://ukamen.hp.infoseek.co.jp/Programming1/DataGrid/index.htm

DataSourceは、DataSetになります。

DataViewから順に検索する具体的なサンプルがあれば紹介して頂けないでしょうか?
非常に助かるのですが。。。

宜しくお願いいたします。

以上
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2004-04-10 10:50
諸農です。

引用:

さすけさんの書き込み (2004-04-10 10:00) より:
DataViewから順に検索する具体的なサンプルがあれば紹介して頂けないでしょうか?
非常に助かるのですが。。。



え。。???
文字通り解釈するなら、本当に「検索の仕方がわからない」ということですか?
そうであるなら、まずは入門書などの購入を行って、プログラミングの基本を
しっかりと押さえて方がいいのかもしれませんね。
なぜなら、提示したコードの意味と使い方がわからないかもしれないという
不安が出てくるからなんです。

コード:
private int GetRowIndex(DataView dv,int StartIdx,string Keyword)
{
    int ret = -1;
    for (int i = StartIdx;i<dv.Count;i++)
    {
        if ((string)dv[i].Row[0] == Keyword)
        {
            ret = i;
            break;
        }
    }
    return ret;
}




_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
さすけ
常連さん
会議室デビュー日: 2004/04/10
投稿数: 38
投稿日時: 2004-04-10 11:55
諸農様

大変、丁寧なご回答ありがとうございます。
まったくの初心者のためよくわかっていませんでした。

初心者の本を購入して勉強してから出直します。

どうもありがとうございました。

以上
さすけ
常連さん
会議室デビュー日: 2004/04/10
投稿数: 38
投稿日時: 2004-04-13 19:58
非常に甘えさせて頂いてすいません。

DataView[i].Row[0]で各行の1番目の値を取得しているのですが、
DataGridのヘッダでソートした後に値を取得しようとしても
画面の見た目の順番で取得ができません。

画面の見た目として何行目のデータを取得しているのかを知る
方法を教えて頂けないでしょうか?


以上
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2004-04-13 23:16
諸農です。

引用:

画面の見た目として何行目のデータを取得しているのかを知る
方法を教えて頂けないでしょうか?



HELPにある一例を少し変えました。

コード:
DataGridCell cell = new DataGridCell();
int row = ((DataView)dataGrid1.DataSource).Table.Rows.Count;
int col = ((DataView)dataGrid1.DataSource).Table.Columns.Count;
for (int i = 0;i<row;i++)
{
    cell.RowNumber = i;
    for (int ii = 0;ii<col;ii++)
    {
        cell.ColumnNumber = ii;
        string s = dataGrid1[cell] as string;
        
        if ((s != null) && (s == myFindKeyword))
        {
            dataGrid1.Select(i);
            return;
        }
    }
}



ここだと、答えはすぐに出るかもしれませんが、
解説書の類が入手できなくても、SDKヘルプには
目を通すようにしましょう。

_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
1

スキルアップ/キャリアアップ(JOB@IT)