在将转发器与其他ObjectDataSourceID绑定后更改我的控件状态
本文关键字:我的 控件状态 绑定 ObjectDataSourceID 转发器 其他 | 更新日期: 2023-09-27 18:01:01
我的博客网站(WIP(上有一个奇怪的问题,我还没有找到解决方案。我有一个中继器,它从一个名为dsGetArticles
的ObjectDataSourceID
的SQL数据库中获取所有文章。
我想做的是,当有人点击一篇文章时,我将ObjectDataSourceID
更改为dsGetArticle
。到目前为止,一切都很好,我看到的是一篇文章,而不是所有的文章。
现在,在我检查了用户是否登录后,我想添加/删除编辑功能,所以如果用户没有登录,显然他不允许更改文章或评论。
因此,当页面加载而用户未登录时,我将带有编辑功能的面板设置为不可见。这是有效的,但只要他点击文章(而不是回发(,编辑函数就会再次可见,尽管它遍历了后面的代码,使面板不可见。
只有当我更改ObjectDataSourceID
并对其进行数据绑定时,才会出现问题
这是我的代码索引:(标准面板可见(
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;
}
}
我也尝试过使用Linkbutton
,这样我就可以通过回发来完成,但我得到了同样的结果,没有面板是不可见的:
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(!User.Identity.IsAuthenticated)
部分不在if(!IsPostBack)
块中吗?因为从你所说的来看,IsAuthenticated
部分似乎只有在没有回发的情况下才被执行。