我有一个包含少量模板列的gridview,在第一个模板列中,我有一个LinkButton(可见默认值)和一个Label(默认隐藏)。
我在服务器端设置了一个属性(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>
在上面的代码中,您可以看到Label默认为false。
当我尝试实现Visible ='&lt; #IsPopup'
时出现以下错误: 分析器错误消息:无法从其“可见”属性的字符串表示形式“&lt; #Ispopup”创建“System.Boolean”类型的对象。
答案 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 ") %>'
设置控制的可见真或假。