【发布时间】:2020-04-07 02:10:47
【问题描述】:
我有一个数据表,它当前显示数据库表中的所有记录。我正在使用 asp.net 和 ado.net。该表由简单的select * from table 存储过程填充。当我的视图加载时,表中会填充所有记录。我希望表一次只显示相关记录,直到表中的这些记录已被授权(接受或拒绝,然后将记录插入其他表)或单击“下一步”按钮。这些记录将按 ID 分组。视图加载时首先显示的 ID 仅取决于第一个记录 ID 是什么。
举一个数据示例以及我希望它如何显示: 所有记录:
PageID AID Name
1 60 Book1
2 60 Book7
3 50 Book7
4 60 Book8
5 70 Book12
6 70 Book7
第一个 ID 是 60(AID),所以我希望它遍历列,找到所有 AID60,将它们显示在视图中,一旦全部执行完毕,它将移动到 AID50 等...
PageID AID Name
1 60 Book1
2 60 Book7
4 60 Book8
我目前在控制器中获取记录的是:
public ActionResult toAction()
{
SqlConnection con = new SqlConnection();
con = new SqlConnection(ConfigurationManager.ConnectionStrings["connectionstringpath"].ToString());
List<ActionModel> AList = new List<ActionModel>();
SqlCommand com = new SqlCommand("Action", con);
com.CommandType = CommandType.StoredProcedure;
SqlDataAdapter da = new SqlDataAdapter(com);
DataTable dt = new DataTable();
con.Open();
da.Fill(dt);
con.Close();
foreach (DataRow dtRow in dt.Rows)
{
string CurrentAID = dtRow["AID"].ToString();
if (dtRow["AID"].ToString().Equals(CurrentAID))
{
AList = (from DataRow dr in dt.Rows
select new ActionModel()
{
PageID = Convert.ToInt32(dr["PageID"]),
AID = Convert.ToInt32(dr["AID"]),
Name = Convert.ToString(dr["Name"])
}).ToList();
}
}
return View(AList);
}
我知道上面的代码不正确,因为 foreach 循环不起作用。这个想法是 获取表中第一条记录的 AID,遍历列的其余部分以查找相同的 AID,并将所有记录添加到列表中以显示到视图中。在视图中执行操作后,将填充下一个 AID。 (我已经有接受/拒绝/下一步按钮)
我只需要让 foreach 正常工作,一次只显示一个 AID。我不会将 AID 作为参数传递,因此 Select * from Action where AID = @AID 之类的方法将不起作用。
【问题讨论】:
标签: c# sql sql-server asp.net-mvc-4 ado.net