2009-04-26 3 views
1

Ceci est mon répéteurMise en place d'une variable de mon code derrière l'intérieur de contrôle Répéteur pour NavigateUrl

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

Ceci est mon code derrière en chargement de la page

' 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() 

Maintenant, j'ai une variable appelée My_Variable. Comment puis-je placer cette variable My_Variable dans mon répéteur ci-dessus?

Répondre

0

Vous devez créer une méthode protégée qui renvoient la chaîne par exemple:

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

Vous pouvez générer lien HTML sur cette méthode. et dans votre répéteur il suffit de lier la méthode dans le lieu de besoin.

<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 /> 
+0

S'il vous plaît mon code revue Mise à jour: j'ai réellement besoin de changer l'URL de l'image ......... – Etienne

2

De cette façon, vous pouvez lier votre variable répéteur:

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

EDIT: Vous utilisez des contrôles statiques qui n'a pas besoin d'être des contrôles serveur. Ainsi, vous pouvez utiliser des éléments HTML et response.write pour votre variable globale comme ça:

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

S'il vous plaît mon code revue Mise à jour: j'ai réellement besoin de changer l'URL de l'image ...... – Etienne

+0

Non, ne fonctionne pas ..... – Etienne

1

vous n'êtes pas vraiment le code db en droit codebehind? c'est juste comme un exemple? votre site sera piraté dans les cinq minutes ...

My_Variable doit être déclaré comme un champ non comme une variable locale dans une fonction. De plus, la liaison de données ne peut pas voir les champs privés.

oh maintenant je vois que vous avez besoin de changer la variable sur chaque article, n'est-ce pas?

Je vous suggère de créer un objet de données pour contenir les données de la base de données et de définir toutes les données pertinentes sur chaque objet, puis de numériser le répéteur dans la liste. Je me rends compte que je devrais montrer du code ici mais c'est 2 ans que j'ai écrit vb en dernier donc ce serait follement inexact de toute façon.

+0

Que voulez-vous dire avec le code-db dans codebehind? Je n'utilise pas mes noms et valeurs réels de table si c'est ce que vous demandez? – Etienne

1

Pour définir l'URL de l'image, vous devez utiliser une expression de liaison de données. En outre, vous devrez définir votre variable 'My_Variable' comme un membre de classe publique.

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