我遇到了一个新问题。
我想选择数据库中的每个成员,其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 :(得分: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();