动态隐藏网格视图中的链接按钮

时间:2011-06-24 17:55:50

标签: asp.net

这是我的模板字段,在gridview中有2个链接按钮。 如何根据用户选择隐藏其中一个lnk按钮

       <asp:TemplateField HeaderText="Action">
       <ItemTemplate>
       <table>
       <tr>

       <td align="center">
       <asp:LinkButton ID="LinkButton1" runat="server" CommandName= "Publish" CommandArgument="<%# Container.DataItemIndex %>"></asp:LinkButton>
       </td>

       <<td align="center">
        <asp:LinkButton ID="LinkButton2" runat="server"   CommandName= "Block" HeaderText="Block" CommandArgument="<%# Container.DataItemIndex %>">Block</asp:LinkButton>
       </td>

       </tr>
       </table>
       </ItemTemplate>

       </asp:TemplateField>       


protected void GridView1_OnRowDataBound(object sender, GridViewRowEventArgs e)
    {


   if(Status=="Posted")
   {
            LinkButton lbtn2 = (LinkButton)e.Row.FindControl("LinkButton2");
            lbtn2.Visible = false;
    }
   if(Status=="Publish")
       {
                LinkButton lbtn1 = (LinkButton)e.Row.FindControl("LinkButton1");
                lbtn1.Visible = false;
        }
    }

我在模板字段中使用2个链接按钮进行此操作。 如果状态==已发布,则隐藏LinkBut​​ton2。 如果ItemType ==已发布,则隐藏LinkBut​​ton1。

我不介意只使用Linkbutton并在aspx.cs中设置commandName和commandArgument

我收到错误...

LinkButton lbtn2 = (LinkButton)e.Row.FindControl("LinkButton2");
lbtn2.Visible = false;

错误:对象引用未设置为指向lnbt2.Visible = false;

的实例

任何线索, 谢谢 太阳

2 个答案:

答案 0 :(得分:0)

检查以确定相关行是数据行,而不是标题等。问题可能是因为当前行是页眉或页脚,因此它不包含您的控件并引发异常。

protected void GridView1_OnRowDataBound(object sender, GridViewRowEventArgs e)
{
    if(e.Row.RowType == DataControlRowType.DataRow)
    {
        if(Status=="Posted")
        {
            LinkButton lbtn2 = (LinkButton)e.Row.FindControl("LinkButton2");
            lbtn2.Visible = false;
        }
        if(Status=="Publish")
        {
            LinkButton lbtn1 = (LinkButton)e.Row.FindControl("LinkButton1");
            lbtn1.Visible = false;
        }
    }
}

答案 1 :(得分:0)

我知道这已经老了,但我一直在寻找同样的东西;我也能够这样做并发布仅供参考:

这是列表视图,但对于gridview应该是相同的:

<asp:LinkButton ID="btnForms" runat="server" Text='MyButton' CommandName="MyCommandName"
Style='<%#GetHiddenTag(Eval("Status").ToString())%>'  CommandArgument='<%#Eval("Status")%>' OnClick="MyOnClickCodeBehind" />

代码隐藏:

    public string GetHiddenTag(string Status)
    {
        if (Status.ToLower() == "completed")
            return "visibility:hidden;";

        return "visibility:visible;";
    }