我有我的博客網站(WIP),我還沒有找到解決方案這個奇怪的問題。我有一箇中繼器,它從一個名爲dsGetArticles
的ObjectDataSourceID
獲取SQL數據庫中的所有文章。改變我的控制狀態與其他ObjectDataSourceID綁定中繼器後
我想要做的是當有人點擊一篇文章時,我將ObjectDataSourceID
更改爲dsGetArticle
。到目前爲止這麼好,一切正常,我看到1篇文章,而不是所有的文章。
現在我檢查用戶是否登錄後,我想添加/刪除編輯功能,所以如果用戶沒有登錄,顯然他不允許更改文章或評論。
因此,當頁面加載並且用戶未登錄時,我將面板設置爲不可見編輯功能。這可以起作用,但只要他點擊文章(不是回發),編輯功能就會再次可見儘管它通過後面的代碼並使面板不可見。
只有當我更改ObjectDataSourceID
並將其數據綁定時,纔會出現此問題。
這是我對這個代碼隱藏:使用Linkbutton
以及,所以我可以回傳做 (標準面板是可見的)
if (!IsPostBack)
{
if (Request.QueryString["articleID"] != null)
{
repArticles.DataSourceID = "dsGetArticle";
}
else
{
repArticles.DataSourceID = "dsGetArticles";
}
repArticles.DataBind();
}
if (!User.Identity.IsAuthenticated)
{
foreach (RepeaterItem ri in repArticles.Items)
{
Panel pnlArticleFunctions = ri.FindControl("pnlArticleFunctions") as Panel;
pnlArticleFunctions.Visible = false;
}
}
我都試過,但我得到了相同的結果,沒有面板是無形的:
protected void lbLink_Click(object sender, EventArgs e)
{
repArticles.DataSourceID = "dsGetArticle";
repArticles.DataBind();
foreach (RepeaterItem ri in repArticles.Items)
{
Panel pnlTest = ri.FindControl("pnlTest") as Panel;
pnlTest.Visible = false;
}
//doesnt become invisible
}
在什麼情況下你有'if(!IsPostBack){}'部分? onInit,onLoad,onPreRender? – ub1k