直接在gridview的aspx页面中编写代码以访问服务器端属性

本文关键字:代码 访问 属性 服务器端 gridview aspx | 更新日期: 2023-09-27 18:16:50

我有一个gridview,其中包含几个模板列,在第一个模板列,我有一个链接按钮(默认可见)和一个标签(默认隐藏)。

我已经设置了一个属性(IsPopup)在服务器端(aspx.cs文件)

现在我的要求是显示LinkButton和隐藏标签,如果IsPopup是真,反之亦然。

下面是代码示例

aspx.cs代码

public bool IsPopup
{
  get;
  set;
}

aspx代码

 <asp:GridView ID="gvEquipment" runat="server" AutoGenerateColumns="False" >
   <Columns>
     <asp:TemplateField HeaderText="ID" meta:resourcekey="TemplateFieldResource2">
       <ItemTemplate>
         <asp:Label ID="lblCheckPointCode" runat="server" meta:resourcekey="lblCheckPointCodeResource1"
           Text='<%# Bind("CheckPointCode") %>' Visible="False"></asp:Label>
         <asp:LinkButton ID="lbtnCheckPointCode" runat="server" CausesValidation="False" CommandName="Edit"
           meta:resourcekey="lbtnCheckPointCodeResource1" Text='<%# Bind("CheckPointCode") %>'></asp:LinkButton>
       </ItemTemplate>
       <ItemStyle Width="25%" />
     </asp:TemplateField>
   </Columns>
 </asp:GridView>

在上面的代码中,你可以看到标签默认为false。

当我尝试实现Visible='<# IsPopup '

出现以下错误:解析器错误消息:无法创建"System"类型的对象。布尔值'<# IsPopup '为'可见'属性。

直接在gridview的aspx页面中编写代码以访问服务器端属性

试试这个:

    <asp:Label ID="lblCheckPointCode" runat="server" meta:resourcekey="lblCheckPointCodeResource1"
       Text='<%# Bind("CheckPointCode") %>' Visible='<%# IsPopup '></asp:Label>
     <asp:LinkButton ID="lbtnCheckPointCode" runat="server" CausesValidation="False" CommandName="Edit"
       meta:resourcekey="lbtnCheckPointCodeResource1" Text='<%# Bind("CheckPointCode") %>' Visible='<%# !IsPopup '></asp:LinkButton>

[Edit]另一种方法,您可以处理RowCreated事件:

void ProductsGridView_RowCreated(Object sender, GridViewRowEventArgs e)
{    
    var lbl = e.Row.FindControl("lblCheckPointCode");
    if(lbl != null) lbl.Visible = !IsPopup;
    var lnk= e.Row.FindControl("lbtnCheckPointCode");
    if(lnk!= null) lbl.Visible = !IsPopup;

}

使用Visible='<%# Bind("IsPopup ") %>'设置控件的可见true或false