将我的Code Behind中的变量放在NavigateUrl的Repeater Control中

时间:2009-04-26 10:48:28

标签: c# asp.net vb.net repeater

这是我的中继器

<asp:Repeater ID="blogRepeater" runat="server">
                <ItemTemplate> 
                <br />       
                    <asp:Image ID="Image1" runat="server" Height="56px" ImageUrl='<%= string.Format( My_Variable) %>' Width="64px" />
                    <asp:HyperLink ID="HyperLink2" runat=server NavigateUrl='<%#Eval("Company_ID", "CompanyProfile.aspx?ID={0}")%>'><%#Eval("Name")%></asp:HyperLink>
                    <br /> 
                </ItemTemplate>
                <SeparatorTemplate>
                    <hr />
                </SeparatorTemplate>
            </asp:Repeater>

这是我在页面加载中的代码

' Define data objects
        Dim conn As Data.SqlClient.SqlConnection
        Dim Comm As Data.SqlClient.SqlCommand
        Dim reader As Data.SqlClient.SqlDataReader

        conn = New Data.SqlClient.SqlConnection(ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString)

        Comm = New Data.SqlClient.SqlCommand( _
        ("SELECT Company_ID, Name FROM CompanyTable ORDER BY Name"), conn)

        Dim My_Variable As String

        My_Variable = "~/createthumb.ashx?gu=/images/Logo.bmp" + "&xmax=75&ymax=75"

        ' Open the connection
        conn.Open()
        ' Execute the category command
        reader = Comm.ExecuteReader()

        ' Bind the reader to the repeater.......................
        blogRepeater.DataSource = reader

        blogRepeater.DataBind()

        ' Close the reader
        reader.Close()
        ' Close the connection
        conn.Close()

现在我有一个名为My_Variable的变量。如何将变量My_Variable放在我的Repeater上面?

4 个答案:

答案 0 :(得分:2)

通过这种方式,您可以将变量绑定到转发器:

<a href='<%= string.Format("CompanyProfile.aspx?ID={0}", My_Variable) %>'>
    <%# Eval("Name") %>
</a>

编辑:您正在使用不需要服务器控件的静态控件。因此,您可以使用HTML元素和response.write作为全局变量:

<img id="Image1" style="height:56px;width:64px;" src='<%= My_Variable %>' />

答案 1 :(得分:1)

你真的没有代码隐藏中的db-code吗?这只是一个例子吗? 您的网站将在五分钟内被黑客攻击......

My_Variable必须声明为字段而不是函数中的局部变量。数据绑定也看不到私有字段。

哦,现在我看到你需要在每个项目上更改变量吗?

我建议您创建一个数据对象以包含来自db的数据,并在每个对象上设置所有相关数据,然后在列表中对转发器进行数据绑定。我意识到我应该在这里显示一些代码,但是我写了vb最后2年,所以无论如何它都会非常不准确。

答案 2 :(得分:1)

要设置图片网址,您必须使用数据绑定表达式。此外,您需要将变量“My_Variable”设为公共类成员。

<asp:Repeater ID="blogRepeater" runat="server">
    <ItemTemplate> 
        <br />       
        <asp:Image ID="Image1" runat="server" Height="56px" ImageUrl='<%# My_Variable %>' Width="64px" />
        <asp:HyperLink ID="HyperLink2" runat=server NavigateUrl='<%#Eval("Company_ID", "CompanyProfile.aspx?ID={0}")%>'><%#Eval("Name")%></asp:HyperLink>
        <br /> 
    </ItemTemplate>
    <SeparatorTemplate>
       <hr />
    </SeparatorTemplate>
</asp:Repeater>

答案 3 :(得分:0)

您需要创建返回字符串的受保护方法,例如:

protected string GetCustomString(object MyVariable)
{
    retun string.Format("<a href='{0}'>{0}</a>", MyVaraible.ToString());
}

您可以在此方法上生成HTML链接。 并在你的转发器中绑定它需要的方法。

<asp:Repeater ID="blogRepeater" runat="server">
            <ItemTemplate> 
             <%# GetCustomString(Eval("My_Variable")) %>

   <asp:HyperLink ID="HyperLink2" runat=server NavigateUrl='<%#Eval("My_Variable", "CompanyProfile.aspx?ID={0}")%>'><%#Eval("Name")%></asp:HyperLink>
                <br />