2013-07-13 14 views
6

Ho un controllo CheckBoxList che contiene elementi di caselle generate dinamicamente. Questa checkbox conterrà nomi utente. Sto usando il controllo Gravatar da AjaxControlToolkit per consentire agli utenti di avere le proprie immagini del profilo. Quello che voglio è che quando una checkbox con username come testo viene aggiunta a CheckBoxList, un controllo Gravatar deve essere aggiunto prima o dopo la checkbox, mostrando la corrispondente immagine di visualizzazione dell'utente. Un modo alternativo mi è venuto in mente di avere un controllo utente personalizzato con una casella di controllo e un gravatar. Ma se qualche altra soluzione leggera e facile è disponibile, per favore suggeriscimi. Segue il codice:Come aggiungere Controllo Gravatar di AjaxControlToolkit prima o dopo la casella di controllo nel controllo casella di controllo

<table class="style1"> 
       <tr> 
        <td align="right" style="padding: 5px" width="25%"> 
         Username/Email:</td> 
        <td style="padding: 5px"> 
         <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
         &nbsp;<asp:Button ID="Button1" runat="server" CssClass="newButton" 
          onclick="Button1_Click" Text="Search" /> 
        </td> 
       </tr> 
       <tr> 
        <td align="right" style="padding: 5px" valign="top" width="25%"> 
         Results:</td> 
        <td style="padding: 5px"> 
         <asp:CheckBoxList ID="CheckBoxList1" runat="server" 
          onselectedindexchanged="CheckBoxList1_SelectedIndexChanged" 
          AutoPostBack="True"> 
         </asp:CheckBoxList> 
        </td> 
       </tr> 
       <tr> 
        <td align="right" style="padding: 5px" width="25%" valign="top"> 
         Selected People:</td> 
        <td style="padding: 5px"> 
         <asp:ListBox ID="ListBox1" runat="server" Height="149px" Width="260px"> 
         </asp:ListBox> 
        </td> 
       </tr> 
      </table> 

Come si può vedere ha anche una casella di riepilogo che contiene l'elemento selezionato dalla checkboxlist. Se possibile, per favore suggeriscimi lo stesso per la lista.

risposta

3

Il controllo Repeater sarebbe adatto a questo. Ti consente di collegarti a un'origine dati e creare un modello per la modalità di visualizzazione degli elementi.

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="act" %> 
... 
<asp:Repeater ID="Repeater1" runat="server"> 
    <ItemTemplate> 
     <asp:CheckBox ID="checkBox" runat="server" /> 
     <act:Gravatar runat="server" ID="gravatar" Email='<%# DataBinder.Eval(Container, "DataItem.useremail")%>' Size="50" Rating="G" DefaultImageBehavior="Identicon" DefaultImage="http://tinyurl.com/3bpsaac" /> 
     <asp:Label ID="userName" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.username")%>'></asp:Label> 
     <br /> 
    </ItemTemplate> 
</asp:Repeater> 

ho questo Repeater legati al seguente DataTable:

System.Data.DataTable GetRepeaterData() { 
    DataTable dt = new DataTable(); 
    dt.Columns.Add("username", typeof(string)); 
    dt.Columns.Add("useremail", typeof(string)); 
    dt.Rows.Add("user_one", "[email protected]"); 
    dt.Rows.Add("user_two", "[email protected]"); 
    dt.Rows.Add("user_three", "[email protected]"); 
    return dt; 
} 
+0

Grazie per questo. In realtà non era quello che volevo, ma questo mi ha dato un suggerimento. Grazie ancora. –