2016-03-04 96 views
1

我想通過使用ASP.NET Gridview,但只有最後一個用戶ID讀取選擇特定的人與他們的ID。假設我的ID爲3,4和6,並且只有ID號6沒有出現在Gridview表中,但出現了3和4。他們 甚至不應該出現3和4,因爲我運行的SQL腳本爲: WHERE NOT EmployeeId = " + userIDASP.NET foreach循環只顯示gridview的最後一個值

foreach (int userID in userIDList) 
{ 

    string cs = ConfigurationManager.ConnectionStrings["MYDB"].ConnectionString; 
    using (SqlConnection con = new SqlConnection(cs)) 
    {     
     SqlCommand cmd = new SqlCommand("SELECT FirstName, LastName FROM Employee WHERE NOT EmployeeId = " + userID, con); 

     con.Open(); 
     GridView4.DataSource = cmd.ExecuteReader(); 
     GridView4.DataBind(); 
    }    
} 

回答

0

您所查詢的是內循環。在每個循環中,您執行查詢並將網格與查詢REPLACING以前的結果進行綁定。
當然,你只會得到最後的結果。

但是,您不需要任何形式的循環,只需使用IN子句,您可以指定一個值列表來過濾結果。

更改您的代碼

string cs = ConfigurationManager.ConnectionStrings["MYDB"].ConnectionString; 
using (SqlConnection con = new SqlConnection(cs)) 
{ 
    string inClause = string.Join(",", userIDList); 
    SqlCommand cmd = new SqlCommand(@"SELECT FirstName, LastName 
      FROM Employee WHERE EmployeeId NOT IN(" + inClause + ")", con); 
    con.Open(); 
    GridView4.DataSource = cmd.ExecuteReader(); 
    GridView4.DataBind(); 
} 

編輯
看來,你在string.Join通話某種unexplicable錯誤的。不清楚是什麼導致它,因爲,據我所知,你應該能夠通過作爲第二個參數string.Join。然而,你可能會迫使你的整數列表成爲一個字符串數組,此代碼

string inClause = string.Join(",", userIDList 
            .Select(x => x.ToString()) 
            .ToArray() 
+0

感謝您快速respons,但我'得到錯誤「的號召是ambigouse以下方法或電學性能的研究之間:「串.Join(string,params string [])和'string.Join(string,params object [])... –

+0

userIDList是什麼類型?我認爲它是一個'List ' – Steve

+0

我聲明爲私人列表 userIDList =新名單();? –

相關問題