2009-06-19 10 views
0

私はテキストボックスとグリッドビューを持っています。グリッドビューは、テキストボックスに入力された値に基づいて作成されます。テキストボックスに任意の名前を入力しているとします。テキストボックスに名前を入力すると、グリッド内の結果が動的に変化するはずです。たとえば、テキストボックスにJohnを入力すると、Joを入力した後、グリッドがJoで始まる結果を入力し、hを入力するとグリッドにJohなどの結果を入力します。私にはこれを解決する方法を提案してください(C#で)。前もって感謝します。テキストボックスに入力された値に基づいて動的にグリッドビューが変更されます

+0

グリッドのデータソースとは何ですか? – AlexDrenea

答えて

0

あなたのtxtBoxのテキスト変更イベントを処理する必要があります。そして、テキストボックス

private void txtBox_TextChanged(object sender, EventArgs e) 
{ 
    string strValue = this.txtBox.Text; 
    DataSet ds = ... // Get the dataset that matches strValue 
    this.dgrid.DataSource = ds; 
} 

に一致するデータをデータグリッドを再バインドしかし、これは、各文字のユーザー・タイプの後にデータグリッドをリロードする、非常に高価な操作になります。私はユーザーがテキストを入力し終わった後にリロードボタンを提供することを提案します。

0

データがあまり頻繁に変更されない場合(ユーザーがフォームまたはページ上にある間に多くの変更が行われた場合など)、すべてのデータを取得してそれ自体のためにキャッシュすることができます。次に、あなただけのテキストボックスに入力された値に基づいて、このデータセットフィルタリング:

private void textBox1_TextChanged(object sender, EventArgs e) 
    { 
     if (tb.Text == "") 
     { 
      //Unfilter the data 
      gv.DataSource = dtb; 
      return; 
     } 
     //Get default view of your data table and filter 
     DataView dv = dtb.DefaultView; 

     //Suppose your column name is "Value" 
     dv.RowFilter = "Value like '" + tb.Text + "%'"; 

     gv.DataSource = dv; 
    } 

をしかし、あなたは重いですすべてのキーを押すだけで、大量のデータをフィルタリングとは思いません。あなたは、テキストボックスのフォーカスを紛失(ぼかし)したり、ユーザーがEnterキーを押したときにそれを行います。ちょうど私の考え...

関連する問題