用于控制可见属性的数据绑定功能不起作用

时间:2009-01-29 23:49:31

标签: asp.net

我正在使用数据绑定来设置控件上的visible属性:

页面控制:

<asp:LinkButton ID="ApproveTimeLink" runat="server"  Visible="<%# CanApprove() %>"> Approve Time</asp:LinkButton>

CodeBehind上的代码:

Protected bool CanApprove()
{
  return false;
}

正如您所看到的那样,控件不应该显示,但仍然可以显示。我没有收到任何错误,我很困惑为什么这不起作用。

感谢您的帮助。

3 个答案:

答案 0 :(得分:9)

以下所有内容

protected void Page_Load(object sender, EventArgs e)
{
    this.DataBind();
}
public bool CanApprove()
{
    return false;
}

然后你可以像之前提到的那样在asp-control上使用这个方法!

但我们知道!页面的每个属性都必须不为空,否则数据绑定将失败并出现异常!

答案 1 :(得分:0)

有时您无法使用&lt;%#%&gt;设置控件属性并且您必须使用OnItemDataBound(...)来获取对控件的引用并在其中设置其Visible属性。有时可能是问题的另一件事是嵌套引号,但在您的示例代码中,我不认为这是一个问题。如果您的真实代码包含嵌套引号,例如Visible =“&lt;%#CanApprove(Eval(”ID“))%&gt;”那可能是你真正的问题。你可以用单引号和双引号交替来解决这个问题。

答案 2 :(得分:0)

这对我来说也很棒......谢谢!!

<asp:Label runat="server" ID="lblLocaton" Text='<%# String.Format("{0}, {1}", Eval("City"), Eval("Region.Code")) %>'  Visible="<%# ShowLocation() %>" />

AND

MfnPresenter.Website.Presenters.IInstituitonListView.ShowLocation


    Get

    End Get
    Set(ByVal value As Boolean)

        'Used by visibility binding expression on lblLocation control inside dlFinancialInsitution

    End Set
End Property