从服务器端绑定int值 - asp.net

时间:2010-02-13 22:06:52

标签: asp.net data-binding gridview

快速提问。我确信这是可能的,只是无法让它发挥作用。 我有一个gridview。有一个gridview。 gridview绑定到我的自定义类的列表。该类公开了一个图像链接以及图像的高度和宽度。我在gridview中有一个图像控件。我已将Image Url绑定到正确的属性。现在,我想绑定高度和宽度属性。但每次我这样做,我都会收到以下错误:

  

无法创建类型的对象   'System.Web.UI.WebControls.Unit'来自   它的字符串表示   '“<%#Bind(”GetImageHeight()“)%'for   '高度'属性。

以下是标记的示例:

<asp:Image runat="server" ID="imgProduct" ImageUrl='<%#Bind("ImageUrl")%>' 
     Height="<%#Bind("GetImageHeight()")%>" Width="<%#Bind("GetImageWidth()")%>">
</asp:Image>

所以,简而言之......如何绑定不是字符串的属性?

方法示例GetImageHeight和GetImageWidth:

   public Unit GetImageHeight()
    {
        Unit u = new Unit(Convert.ToString(ImageHeight) + "px");
        return u;
    }

    public Unit GetImageWidth()
    {
        Unit u = new Unit(Convert.ToString(ImageWidth) + "px");
        return u;
    }

3 个答案:

答案 0 :(得分:1)

DOH!我第一次错过了它。尝试删除绑定中的引号

 Height="<%#Bind("GetImageHeight()")%>"

应该看起来像

 Height="<%#Bind(GetImageHeight())%>"

并返回一个int应该可以正常工作。不需要方法中的所有繁忙工作。

我可能错了......

答案 1 :(得分:0)

您可以更改GetImageHeight / Width()方法以返回Unit吗?

答案 2 :(得分:0)

这对我来说很有用,试一试:

<asp:Image runat="server" ID="imgProduct" ImageUrl='test.jpg' 
 Height='<%# GetImageHeight() %>' Width='<%# GetImageWidth() %>' />

在.cs:

protected int GetImageHeight()
{
    return 5;
}
protected int GetImageWidth()
{
    return 5;
}

渲染:

<img id="imgProduct" src="test.jpg" style="height:5px;width:5px;border-width:0px;" />