2016-11-28 9 views
1

テキストボックスに入力する値Iに基づいて複数のデータを表示します。 Iは、CASAのテキストボックスに入力= 200とCASBテキストボックス= 200、WSID 1234及び5678が示される場合C#を使用して複数のデータをDatagridviewに表示

WSID CasA CasB 
1234 200 100 
5678 300 200 
0987 400 300 
6543 500 400 

:私のようなデータを持っています。私は上記のような値を入力すれば、CasBのWSIDを表示するだけで問題はあります。誰でも助けてくれますか?

string lokasinectar = LokasiNectar.Text; 
string koneksinectar = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + lokasinectar + ";Extended Properties='Excel 12.0 xml;HDR=YES;IMEX=1';"; 

int thresholdcasa; 
Int32.TryParse(CasA.Text, out thresholdcasa); 

int thresholdcasb; 
Int32.TryParse(CasB.Text, out thresholdcasb); 

OleDbConnection kon = new OleDbConnection(koneksinectar); 
DataTable dt = new DataTable(); 

OleDbDataAdapter adapter = new OleDbDataAdapter("select [WSID], [CasA], [CasB] from [Sheet1$]", kon); 
DataSet coba = new DataSet(); 
adapter.Fill(coba); 

var table = coba.Tables[0]; 
var view = new DataView(table); 

if (CasAChk.Checked) 
{ 
    if (CasA.Text.Length > 0) 
    { 

     view.RowFilter = string.Format("[CasA] = '{0}'", thresholdcasa); 
    } 
} 
else if (CasBChk.Checked) 
{ 
    if (CasB.Text.Length > 0) 
    { 
     view.RowFilter = string.Format("[CasB] ='{0}'", thresholdcasb); 
    } 
} 

ViewNectarGV.DataSource = view; 
+0

コードはいつ実行されますか?例えばイベント中かどうか。チェックボックスをオンにしたら? – jambonick

答えて

1

あなたはそれゆえ一つだけのコードブロックまたは他を実行することができ、if... else if声明の中で、あなたのRowFilterを構築しています。フィルタリングするすべての列を追加し、ORで結合した動的フィルタを作成する必要があります。 this answerから大きく借りて、以下を試してください。

int temp = 0; 
StringBuilder sb = new StringBuilder(); 

if (CasAChk.Checked && Int32.TryParse(CasA.Text, out temp)) 
{ 
    sb.Append(string.Format("[CasA] = '{0}'", temp)); 
} 

if (CasBChk.Checked && Int32.TryParse(CasB.Text, out temp)) 
{ 
    if (sb.Length > 0) 
    { 
     sb.Append(" OR "); 
    } 

    sb.Append(string.Format("[CasB] = '{0}'", temp)); 
} 

view.RowFilter = sb.ToString(); 

ViewNectarGV.DataSource = view; 
+0

ああ、ありがとう!できます !私はもう一度あなたに尋ねたい。どのように各列の色を設定できますか?たとえば、CasAの場合は、出力列を赤色に、黄色の場合はCasBの出力に色を付ける@OhBeWise –

+0

'DataSource'を設定した後、' yourDataGridView.Columns [desiredColumnIndex] .DefaultCellStyle.ForeColor'または '.BackColor 'あなたの好みの色に。 – OhBeWise

+0

Mmm。たとえば、希望の結果が表示されているときなど、その列は青色で、別の列は白色になります。したがって、200のCasAが表示されている場合、列の色が変化し、300,400、および500の色は変化しません。手伝って頂けますか ? –

関連する問題