c#——DataList中后台设置控件可见性的问题!
我要根据会员权限设置DataList中的一个LinkButton的可见性的问题!我怎么设置那个LinkButton的可见性啊?下面是我尝试过的一段代码!LinkButto...
我要根据会员权限设置DataList中的一个LinkButton的可见性的问题!我怎么设置那个LinkButton的可见性啊?下面是我尝试过的一段代码!
LinkButton LinkButton2 = (LinkButton)DataList1.FindControl("LinkButton1");
LinkButton2.Visible = false;
可是不行啊!浏览的时候给出的提示是——“未将对象引用设置到对象的实例。”将这个代码放在Page_Load、DataBinding、DataList1_Load、等等我都试过了!请大家帮忙!谢谢!
我在DataBound中加入了如下语句!
LinkButton LinkButton2 = (LinkButton)DataList1.SelectedItem.FindControl("LinkButton1");
LinkButton2.Visible = false;
可是那个LinkButton依旧显示着呢!
请大家帮忙! 展开
LinkButton LinkButton2 = (LinkButton)DataList1.FindControl("LinkButton1");
LinkButton2.Visible = false;
可是不行啊!浏览的时候给出的提示是——“未将对象引用设置到对象的实例。”将这个代码放在Page_Load、DataBinding、DataList1_Load、等等我都试过了!请大家帮忙!谢谢!
我在DataBound中加入了如下语句!
LinkButton LinkButton2 = (LinkButton)DataList1.SelectedItem.FindControl("LinkButton1");
LinkButton2.Visible = false;
可是那个LinkButton依旧显示着呢!
请大家帮忙! 展开
6个回答
展开全部
“LinkButton LinkButton2 = (LinkButton)DataList1.FindControl("LinkButton1");”
LinkButton2.Visible = false;
未将对象引用设置到对象的实例的意思是你所要找的LinkButton2不存在,所以你使用一个不存在的控件的Visible属性就会报错
找LinkButton的方法不是你那样的,要先遍历DataList,在DataList的子控件中寻找该控件,有2种方法:
1.
foreach (DataListItem item in DataList1.Items)
{
if(((LinkButton)item.FindControl("LinkButton1"))!=null)
{
((LinkButton)item.FindControl("LinkButton1")).visible=false;
}
}
2. for (int i = 0; i < DataList1.Items.Count; i++)
{
LinkButton btn = (LinkButton)DataList1.Items[i].FindControl("LinkButton1");
{
btn.visble=false;
}
}
我通常都是在PreRender里先绑定,在遍历隐藏,我贴段简单代码你看下
protected void DataList1_PreRender(object sender, EventArgs e)
{
BindData();
//下面检查权限,若权限不足就遍历隐藏
//贴上上面遍历的代码
}
protected void BindData()
{
DataTable dt=new DataTable();
//dt=...;
DataList1.DataSource=dt;
DataList1.DataBind();
}
LinkButton2.Visible = false;
未将对象引用设置到对象的实例的意思是你所要找的LinkButton2不存在,所以你使用一个不存在的控件的Visible属性就会报错
找LinkButton的方法不是你那样的,要先遍历DataList,在DataList的子控件中寻找该控件,有2种方法:
1.
foreach (DataListItem item in DataList1.Items)
{
if(((LinkButton)item.FindControl("LinkButton1"))!=null)
{
((LinkButton)item.FindControl("LinkButton1")).visible=false;
}
}
2. for (int i = 0; i < DataList1.Items.Count; i++)
{
LinkButton btn = (LinkButton)DataList1.Items[i].FindControl("LinkButton1");
{
btn.visble=false;
}
}
我通常都是在PreRender里先绑定,在遍历隐藏,我贴段简单代码你看下
protected void DataList1_PreRender(object sender, EventArgs e)
{
BindData();
//下面检查权限,若权限不足就遍历隐藏
//贴上上面遍历的代码
}
protected void BindData()
{
DataTable dt=new DataTable();
//dt=...;
DataList1.DataSource=dt;
DataList1.DataBind();
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
放在ItemDataBound事件里
control linkbutton= e.Item.FindControl("")
linkbutton.visible=false
就可以了
control linkbutton= e.Item.FindControl("")
linkbutton.visible=false
就可以了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
未将对象引用设置到对象的实例,肯定是你没有找到这个控件,LinkButton2的值是NUll.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的linkbutton1肯定没有找到,是空的。在DataBound事件中写:
LinkButton LinkButton2 = (LinkButton)DataList1.SelectedItem.FindControl("LinkButton1");
LinkButton LinkButton2 = (LinkButton)DataList1.SelectedItem.FindControl("LinkButton1");
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
LinkButton Link = (LinkButton )this.DataList1.SelectedItem.FindControl("LinkButton1");
Link.Visible=false;
Link.Visible=false;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询