Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# gridview中的多个数据_C#_Asp.net_Sql - Fatal编程技术网

C# 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中,而不是替换它 以下是我目前掌握的代

我遇到了一个新问题

我想选择数据库中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的数据绑定应该一直在查询的后面。否则每次查询的结果都会被覆盖