我的页面中有一个asp占位符,我在其中动态插入“行”,其中每行都是用户控件。
如果请求是GET请求,我会从数据库加载数据并根据需要填充尽可能多的用户控件。我还将控件实例添加到会话内容中。
如果请求是POST请求,我首先通过查看Page_Load()内部的会话内容来重新创建控件。之后,每个按钮的处理程序可以执行任何需要完成的额外工作,例如添加新行(占位符,会话和数据库),删除行(来自占位符,会话和数据库)或更新现有的一行。
我在这里面临几个问题:
如何解决这些问题?我甚至很难诊断出这个问题。这些常见问题是什么?我这样做完全错了吗?有什么更好的方法来实现这一目标?
答案 0 :(得分:1)
我之前遇到过这样的问题。我修理了它们:
"usr_" + <db
record id>
的事情。这确保了它的相同ID,无论它的顺序如何
加载,删除哪些记录等等。这可能是最多的
重要的是要做,因为如果你不指定ID的.NET会
为他们分配 - 并按照他们显示的顺序分配
在控制集合中,这意味着你可能会有
错误的用户控件中的错误信息(您在自己的控件中描述)
问题)。这些方面的东西:
using (SqlConnection c = new SqlConnection(DB_STRING))
{
c.Open();
String sql = @"
SELECT *
FROM yourTable
ORDER BY ID;";
using (SqlCommand cmd = new SqlCommand(sql, c))
{
using (SqlDataReader d = cmd.ExecuteReader())
{
while (d.Read())
{
UserControl uc = (UserControl)new UserControl().LoadControl("~/path/to-your-control/YourControl.ascx");
uc.ID = "usr_" + d["ID"];
plcHolderRows.Controls.Add(uc);
}
}
}
}