后台:
if (jc == "WSDA" || jc == "WSWJFB")
{
foreach (GridViewRow row in GridView.Rows)
{
LinkButton lbtnAJ = row.FindControl("lbtnAJ") as LinkButton;
lbtnAJ.Visible = false;
}
}
在满足条件时,将Gridview行的“案卷”按钮给屏蔽;
用上面的方法的话,会出现Gridview的最后一行的“案卷”按钮没有给去掉,这是为什么呢?该怎么办?
我想到,先读取Gridview的行数,然后for循环,逐行删,但是不会读取Gridview的行数。
请大家帮忙
楼主 写程序的时候不要想当然 gridview给提供了事件为什么不用呢
你这个情况比较适合用RowCreated和RowDataBound事件 楼主看看去 我一会给你找点示例代码
PS:话说你这是做政府项目还是什么 肯定不是商用项目吧 GridView很耗性能的
RowCreated事件 演示给行加荧光效果
下面的RowDataBound事件是自定义列显示内容的
//每次创建行都引发的事件 protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) //e.Row就是RowCreated刚创建的行 { e.Row.Attributes.Add("onmouseover", "currentgb=this.style.backgroundColor;this.style.backgroundColor='#ff9966';"); //将现在的背景色存在变量currentgb中 同时设置一个新的背景色:#ff9966 e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=currentgb"); //设置鼠标移走的效果为新背景色 } }
//RowDataBound事件:数据绑定后触发的事件(数据绑定后才可以对数据进行判断) protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { //如果大于100次点击 就显示较多,否则显示较少 if (e.Row.RowType == DataControlRowType.DataRow) { e.Row.Cells[4].Text = Convert.ToInt32(e.Row.Cells[4].Text) > 100 ? "<font color='red'>较多</font>" : "<font color='blue'>较少</font>"; //这里单独new一个Label控件出来是因为要和下面的Image控件一起显示,两个控件都要add到控件集合中,如果仅修改显示的文字,那么上面的一行代码就可以了。 Label label = new Label(); label.Text = e.Row.Cells[4].Text; e.Row.Cells[4].Controls.Add(label); //显示自定义内容也可以显示图片,如下: //如果点击次数等于1 那么显示male.gif string img = e.Row.Cells[4].Text == "1" ? "male.gif" : "female.gif"; //实例化Image控件 Image imgControl = new Image(); imgControl.ImageUrl = "~/images/" + img; //添加到控件集合当中去集合中去 e.Row.Cells[4].Controls.Add(imgControl); } }
谢谢!后面就是在GridView1_RowCreated里解决的,用e.Row.FindControl("lbtnLook") as LinkButton就能读到Gridview的按钮,然后再判断条件里写。我已经感觉到Gridview对性能的影响了,但是我也没办法,我刚毕业到公司来的,这个项目已经成型了,我现在只是在维护着。再次谢谢!
GridView.Rows.Count
谢谢,那个可以读到行数。