2017-10-16 18 views
1

我想通過一個PHP項目到ASP.NET,我正在做一些測試。回到懷疑,我有這樣的代碼來完成:C#如何使一個foreach循環不重寫字符串變量

using System; 
using System.Configuration; 
using System.Data; 
using MySql.Data.MySqlClient; 

namespace project_t 
{ 
    public partial class _Default : System.Web.UI.Page 
    { 
     public string level_text; 

     public void Page_Load(object sender, EventArgs e) => people_box_repeater_method(); 

     public void people_box_repeater_method() 
     { 
      using (MySqlConnection mysql_connection = new MySqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString)) 
      { 
       MySqlDataAdapter mysql_data_adapter = new MySqlDataAdapter("SELECT * FROM employees", mysql_connection); 
       DataTable data_table = new DataTable(); 
       mysql_data_adapter.Fill(data_table); 

       DataView data_view = new DataView(data_table); 
       data_view.Sort = "name"; 
       data_view.Sort = "function"; 
       data_view.Sort = "sector"; 
       data_view.Sort = "location"; 
       data_view.Sort = "mail"; 
       data_view.Sort = "phone"; 
       data_view.Sort = "photo"; 
       people_box_repeater.DataSource = data_view; 
       people_box_repeater.DataBind(); 

       string vartest = "4"; 
       foreach (DataRow data_row in data_table.Rows) { 
        if ((string)data_row["level"] == vartest) { level_text = (string)data_row["level"]; System.Diagnostics.Debug.WriteLine(data_row["level"]); } 
       } 
      } 
     } 
    } 
} 

我的問題是這部分:

string vartest = "4"; 
foreach (DataRow data_row in data_table.Rows) { 
    if ((string)data_row["level"] == vartest) { level_text = (string)data_row["level"]; System.Diagnostics.Debug.WriteLine(data_row["level"]); } 
} 

我把兩個數據輸出,一個在.aspx頁面,我的HTML代碼<% = level_text%>和另一個在輸出控制檯上。

在我的數據庫中,我有四行「level」列中的值爲「4」。 At the console output, it returns me four rows corresponding to the database.

Now in the .aspx page the number "4" appears once.我希望出現四次數字「4」就像在控制檯輸出。我究竟做錯了什麼?

+0

你想用7個連續的調用來排序相同的DataView? – Steve

+0

在*創建'DataView'並將'DataView'指定爲'DataSource'之前執行'DataTable'操縱*。換句話說,在'mysql_data_adapter.Fill(data_table);' – Nino

+0

之後移動你的3個「有問題」的行,它是正確的。你正在用值「4」替換變量的值,所以最後你在那個變量中有「4」。如果要連接使用label_text + = value的輸出。 – Steve

回答

1

每次你的if語句是真的,你都這樣做。 level_text =(string)data_row [「level」]; 這意味着它每次都設置爲相同的值。 如果使用+ =而不是=,它會添加一些東西到字符串中。

例如,你的代碼現在正在做level_text = 4;每次用+ =你會得到level_text = 4444

+0

它工作完美,謝謝! –

相關問題