需求是这样的,有GridView1一个,GridView1中有模板列一个,在数据加载过程中,会根据逻辑代码的判断来决定放哪个控件,其中的控件包括 一个LinkButton控件或者Label控件,您能否写一段代码给我呢,谢谢!

解决方案 »

  1.   

    假设两个控件都放,两个控件初始都隐藏。
    在行绑定事件中写
    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if(你的逻辑判断)
        {
            e.Row.Cells[CellIndex].Controls[1].Visible = true;
        }
        else
        {
            e.Row.Cells[CellIndex].Controls[2].Visible = true;
        }
    }
      

  2.   

    LinkButton
    <asp:LinkButton ID="lb1"Label<asp:Label ID="lab1"GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
    {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                LinkButton lb1 = (LinkButton)e.Row.FindControl("lb1");
                Label lab1 = (Label)e.Row.FindControl("lab1");
                if (true)
                {
                    lb1.Visible = true;
                    lab1.Visible = false;
                }
                else
                {
                    lb1.Visible = false;
                    lab1.Visible = true;
                }
            }
    }
      

  3.   

    我以前用placeHolder,先判断后再决定添加什么控件。看来你这个思路更简单。
      

  4.   

    感谢各位的回答。我想可能我表达有误。
    我的意思是在页面加载的时候,动态往GridView1的模板里添加服务器控件(每行只可能有一个控件),而不是往GridView1里添加所有服务器控件后,去设置它们的Visble属性。
      

  5.   

    在RowDataBound里面加不就好了: protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
    {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                if(你要加LinkButton)
                {
                     LinkButton lb = new LinkButton();
                     lb.Text = "你要显示的字";
                     e.Row.Cells[2].Controls.Add(lb);//在第3列加LinkButton
                }
                else if(你要加Label)
                {
                     //参照上面
                }
            }
    }
      

  6.   

    这就需要用到GrivView的RowDataBound事件了:protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 

        LinkButton lb=e.Row.Cells.FindControl("LinkButton1") as LinkButton;
        Label label=e.Row.Cells.FindControl("Label1") as Label;
        if(你的逻辑判断) 
        { 
            lb.Visible=true;
            label.Visible=false;
        } 
        else 
        { 
            lb.Visible=false;
            label.Visible=true;
        } 
    }
      

  7.   

    兄弟,我写的代码和你的一样,我换成你的代码后,GRIDVIEW绑定没有实现效果。