C# gridview中的多个数据
我遇到了一个新问题 我想选择数据库中statusID高于当前用户的每个成员。 对于这些成员中的每一个,我希望在gridview中显示填充模型 这意味着我必须对发现的每个状态ID高于当前用户的成员重复1次SELECT查询 为了填充我的gridview,我使用ASPX C后面的编程代码。据我所知,我一次只能在gridview中输入1个SQL查询 有没有办法在一个gridview中显示所有这些记录?像F.E.一样,对于每个用户,它只需将新数据添加到gridview中,而不是替换它 以下是我目前掌握的代码:C# gridview中的多个数据,c#,asp.net,sql,C#,Asp.net,Sql,我遇到了一个新问题 我想选择数据库中statusID高于当前用户的每个成员。 对于这些成员中的每一个,我希望在gridview中显示填充模型 这意味着我必须对发现的每个状态ID高于当前用户的成员重复1次SELECT查询 为了填充我的gridview,我使用ASPX C后面的编程代码。据我所知,我一次只能在gridview中输入1个SQL查询 有没有办法在一个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++;
}
真的,欢迎任何帮助,因为我完全不知道该怎么做。我可以想到两种可能的方法: 1:SQL级别将是最好的,我不知道如何:我相信您可以在一个DB调用中完成所有这些。可能是一个复杂的SP,但SQL专家可能会为您指明正确的方向 2:C编码:以下是您需要执行的操作: 2a:创建一个普通C类,该类的属性映射到循环中上次查询返回的字段。i、 例如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();
需要更多信息才能更好地理解它。为什么要在while循环中绑定网格?要对onderdanen[]中的每个成员执行SELECT查询,应对onderdanen[]中的每个成员执行此查询的每个结果添加到gridview gvModelAdmin。在循环中绑定它,因为我不知道如何在循环之外绑定它。你认为在while循环中这样做会将数据附加到gridview吗?不,我不知道,但这是我能想到的唯一答案。我认为gridview的数据绑定应该一直在查询的后面。否则每次查询的结果都会被覆盖