2014-09-27 48 views
-2

我遇到了問題。我正在爲一個任務數據庫編寫一個工具。在1列中有「獎勵」類型,然後是4種類型的exra列。現在我希望如果另一個文本框顯示獎勵的類型,那麼在文本框中顯示4列中的右列。if mysql column = 0,1,2將正確的值添加到文本框

我有一列=類型,它顯示哪種類型的「獎勵」是。例如,一個項目(0),金(1),exp(2)

現在我想把所有的獎列放到一個文本框中。因此,如果類型爲0,則將xy列放入文本框,如果其爲1,則將黃金列放入文本框中。

我該怎麼做?

希望有人能幫助我:)打破我的頭,對天..

代碼:

private void listBox1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
     try 
     { 
      connection.Open(); 
      OleDbCommand command = new OleDbCommand(); 
      command.Connection = connection; 
      string query = "select * from quest where a_name='" + listBox1.Text + "'"; 
      command.CommandText = query; 

      OleDbDataReader reader = command.ExecuteReader(); 
      while (reader.Read()) 
      { 
       textBox5.Text = reader["a_name"].ToString(); 
       textBox28.Text = reader["a_prize_type0"].ToString(); 
       textBox29.Text = reader["a_prize_index0"].ToString(); 
       textBox30.Text = reader["a_prize_data0"].ToString(); 
       textBox31.Text = reader["a_prize_type1"].ToString(); 
       textBox32.Text = reader["a_prize_index1"].ToString(); 
       textBox33.Text = reader["a_prize_data1"].ToString(); 
       textBox34.Text = reader["a_prize_type2"].ToString(); 
       textBox35.Text = reader["a_prize_index2"].ToString(); 
       textBox37.Text = reader["a_prize_type3"].ToString(); 
       textBox38.Text = reader["a_prize_index3"].ToString(); 
       textBox39.Text = reader["a_prize_data3"].ToString(); 
       textBox40.Text = reader["a_prize_type4"].ToString(); 
       textBox41.Text = reader["a_prize_index4"].ToString(); 
       textBox42.Text = reader["a_prize_data4"].ToString(); 
       textBox64.Text = reader["a_prize_data1"].ToString(); 
       textBox63.Text = reader["a_prize_data2"].ToString(); 
       textBox65.Text = reader["a_prize_data3"].ToString(); 
       textBox66.Text = reader["a_prize_data4"].ToString(); 
      } 
      connection.Close(); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show("Error " + ex); 
     } 
} 
+0

顯示一些代碼並解釋用戶交互..! – TaW 2014-09-27 11:14:50

+0

@TaW目前我只將數據庫值放在文本框中,而沒有更多: textBox42.Text = reader [「a_prize_data0」]。ToString();並與所有4種類型的列和索引和黃金,技能點等數據存儲 – ZaTii 2014-09-27 12:52:37

+0

但現在我想我只有2個文本框和程序在文本框1中查找,如果類型爲0,那麼他顯示來自右列的值。我不想擁有數百個文本框。我想要1個文本框,程序會看到自己在其他文本框中顯示的是什麼類型,然後在文本框中顯示正確的值。2 – ZaTii 2014-09-27 12:56:08

回答

0

我真的不知道自己在做什麼,你的問題是如何真正奠定出。

所以我假設你從數據庫中得到一條記錄,根據從ListBox提供的where子句。

此記錄似乎有大量的字段,大約20個。您到目前爲止將這些字段複製到TextBoxes中,其中您也有很多數字。有些字段被複制到多個不同的文本框中。 (例如「a_prize_data4」)是嗎?

相反,您希望將幾個選定的字段複製到一個文本框中。選擇哪個字段需要由第一個字段(類型字段)確定。但是你有四個字段叫做「a_prize_type」,從1-4開始編號!

你沒有告訴我們,你想如何將字段組合成一個文本,所以我假設你想要他們在不同的行。

這是您可能想要學習的一段代碼;也許它會幫助你解決問題。

我首先設置了幾個List<string>,每種類型一個,並填入一些字段名稱。你可以把它們無論是在同一事件或讓他們在一流水平..

然後我檢查類型字段,並把該領域的該類型爲目標TextBox ..

// preparation: set up field lists 
    List<string> itemFields = new List<string>() 
       { "itemField1", "itemField2", "itemField3", "itemField4", "..." }; 
    List<string> goldFields = new List<string>() 
       { "goldField1", "goldField2", "goldField3", "goldField4", "..." }; 
    List<string> expFields = new List<string>() 
       { "expField1", "expField2", "expField3", "expField4", "..." }; 
    // .. 


    // now we can fill the right data into the target: 
    targetTextBox.Text = ""; 
    if (typeTextBox.Text == "Item") 
     foreach (string fName in itemFields) 
        targetTextBox.Text += reader[fName].ToString() + "\r\n"; 
    else if (typeTextBox.Text == "Gold") 
     foreach (string fName in goldFields) 
       targetTextBox.Text += reader[fName].ToString() + "\r\n"; 
    else if (typeTextBox.Text == "Experience")  
     foreach (string fName in expFields) 
       targetTextBox.Text += reader[fName].ToString() + "\r\n"; 
    // .. 

您將有改變所有的名字,顯然! 而不是比較typeTextBox.Text你可能可以使用類型字段..

+0

我會測試它:) THX另一種解釋。類型字段說如果它的一個項目(然後它的0),黃金(然後它的1)等等。我希望當我從數據庫中讀取數值並在一個文本框中顯示時。因此該工具會檢查類型字段的數量。如果是1,他將項目列值放入文本框中,如果其值爲1,則將黃金列值放入文本框 – ZaTii 2014-09-27 15:30:05

+0

當然。 if表達式只是一個可讀的演示。如果你的類型字段(這是什麼?)持有一個數字,只需將其相應地更改。 – TaW 2014-09-27 16:07:16

+0

Thx它的工作! :) – ZaTii 2014-09-28 12:03:03