2011-05-21 23 views
0

我遇到了一個新問題。gridview中的多個數據

我想選擇數據庫中每個成員的statusID高於當前用戶的成員。 對於這些成員中的每一個成員,我都希望填充要在我的GridView中顯示的模型。

這意味着我將不得不爲每個發現狀態ID高於當前用戶的成員重複1個SELECT查詢。

填寫我的gridview我使用ASPX(C#)後面的編程代碼。據我所知,我一次只能在我的gridview中導入1個SQL查詢。

有沒有什麼辦法可以在1個gridview中顯示所有這些記錄?像每個用戶的F.E.一樣,只需將新數據添加到gridview而不是替換它?

這裏是到目前爲止,我已經得到了代碼:

  int statushelp = int.Parse(statusid); 

      SqlCommand cmd = new SqlCommand("SELECT COUNT (*) FROM Login WHERE Status_ID > " + statushelp + " ", con); 
      int aantal = (int)cmd.ExecuteScalar(); 

      string[] onderdanen = new string[aantal]; 
      int teller = 0; 

      SqlCommand cmd1 = new SqlCommand("SELECT User_ID FROM Login WHERE Status_ID > " + statushelp + " ", con); 
      dr = cmd1.ExecuteReader(); 

      while (dr.Read()) 
      { 
       onderdanen[teller] = dr["User_ID"].ToString(); 
       teller++; 
      } 

      dr.Close(); 
      string onderdaan; 
      teller = 0; 

      while (teller < onderdanen.Length) 
      { 
       onderdaan = onderdanen[teller].ToString(); 

       SqlCommand cmd2 = new SqlCommand("SELECT M.Mod_ID AS Modelnr, M.Mod_Naam AS Modelnaam, M.Mod_Omschrijving AS Omschrijving, M.Taal_Id, M.User_ID FROM Toewijzing T, Model M WHERE T.User_ID = '" + onderdaan + "' AND T.Toe_Status = '" + "ja" + "' AND M.Mod_ID = T.Mod_ID", con); 
       dr = cmd2.ExecuteReader(); 
       Debug.WriteLine(dr["M.Mod_ID"].ToString()); 
       gvModelAdmin.DataSource = dr; 
       gvModelAdmin.HeaderStyle.HorizontalAlign = HorizontalAlign.Left; 
       gvModelAdmin.DataBind(); 
       dr.Close(); 
       teller++; 

      } 

真的歡迎任何幫助職高我有絕對不知道如何做到這一點..

+0

更多信息,更好地理解它。 – jams 2011-05-21 19:33:06

+0

爲什麼你在while循環中綁定網格? – jams 2011-05-21 19:34:26

+0

要對onderdanen []中的每個成員執行SELECT querry,此查詢的每個結果(對於onderdanen []中的每個成員)都應該添加到gridview gvModelAdmin。 在循環中對它進行綁定我很不知道如何在循環外綁定它。 – Nico 2011-05-21 19:49:09

回答

2

兩種可能的方式我能想到的作者:

1:SQL級別(將是最好的,我不知道如何):我相信你可以在一次數據庫調用中做到這一切。可能是一個複雜的SP,但是SQL專家可能能夠指引您正確的方向。

2:C#編碼:這裏有您需要做什麼:

2A:創建具有映射到田間地頭從循環的最後一個查詢返回的屬性一個普通的C#類。即Modelnr,Modelnaam等。假設您將其命名爲MyModelClass。

public class MyModelClass{ 

public string Modelnr {get;set;} //set the type of property according to the datatype of DB field 

public string Modelnaam{get;set;} 
...other properties 
} 

2B:然後修改您的代碼是這樣的:需要

List<MyModelClass> mmcList = new List<MyModelClass>(); 
while (teller < onderdanen.Length){ 
onderdaan = onderdanen[teller].ToString(); 
SqlCommand cmd2 = new SqlCommand("SELECT M.Mod_ID AS Modelnr, M.Mod_Naam AS Modelnaam, M.Mod_Omschrijving AS Omschrijving, M.Taal_Id, M.User_ID FROM Toewijzing T, Model M WHERE T.User_ID = '" + onderdaan + "' AND T.Toe_Status = '" + "ja" + "' AND M.Mod_ID = T.Mod_ID", con); 
dr = cmd2.ExecuteReader(); 
if(dr!=null && dr.HasRows){ 
MyModelClass mmcObj= new MyModelClass(); 
dr.Read(); 
mmcObj.Modelnr = dr["Modelnr"].ToString(); //Modelnr is String property in MyModelClass 
mmcObj.Modelnaam= dr["Modelnaam"].ToString();//Modelnaam is a String prop in MyModelClass 
...///so on other properties 

mmcList.Add(mmcObj); 
} 
dr.Close();     
teller++; 
} 
gvModelAdmin.DataSource = mmcList; //set gv datasourc to the list on myModelClass 
gvModelAdmin.HeaderStyle.HorizontalAlign = HorizontalAlign.Left; 
gvModelAdmin.DataBind();