[英]Using a user control as a row inside a placeholder
我的頁面中有一個asp占位符,並在其中動態插入“行”,其中每一行都是一個用戶控件。
如果請求是GET請求,則從數據庫加載數據,並根據需要填充盡可能多的用戶控件。 我還將控件實例添加到會話內容中。
如果請求是POST請求,則我首先通過查看Page_Load()內部的會話內容來重新創建控件。 之后,每個按鈕的處理程序都可以做任何需要做的額外工作,例如添加新行(到占位符,會話和數據庫),刪除行(從占位符,會話和DB)或更新現有行。
我在這里面臨幾個問題:
我該如何解決這些問題? 即使診斷問題,我也很難。 這些是常見問題嗎? 我只是在做這件事完全錯誤嗎? 有什么更好的方法可以做到這一點?
我以前遇到過這樣的問題。 我通過以下方式修復了它們:
"usr_" + <db record id>
。 不管加載順序如何,刪除哪些記錄等等,這都可以確保其ID相同。這可能是最重要的事情,因為如果您不分配ID,.NET就會為您分配ID。它們是按照它們在控件集合中顯示的順序分配的,這意味着您可能在錯誤的用戶控件(您在問題中進行了描述)中獲得了錯誤的信息。 遵循以下原則:
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);
}
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.