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

时间:2011-12-06 12:23:56

标签: c# asp.net performance gridview

我有一个包含少量模板列的gridview,在第一个模板列中,我有一个LinkBut​​ton(可见默认值)和一个Label(默认隐藏)。

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

现在我的要求是显示LinkBut​​ton并隐藏标签,如果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>

在上面的代码中,您可以看到Label默认为false。

当我尝试实现Visible ='&lt; #IsPopup'

出现以下错误: 分析器错误消息:无法从其“可见”属性的字符串表示形式“&lt; #Ispopup”创建“System.Boolean”类型的对象。

2 个答案:

答案 0 :(得分:1)

试试这个:

    <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>

[编辑]另一种方法,你可以处理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;



}

答案 1 :(得分:0)

使用Visible='<%# Bind("IsPopup ") %>'设置控制的可见真或假。