如何在checkboxlist控件中的复选框之前或之后添加AjaxControlToolkit的Gravatar控件

时间:2013-07-13 16:14:15

标签: c# asp.net c#-4.0 ajaxcontroltoolkit gravatar

我有一个包含动态生成的复选框项的CheckBoxList控件。此复选框列表将包含用户名。我正在使用AjaxControlToolkit中的Gravatar控件来允许用户拥有自己的个人资料图片。我想要的是当一个带有用户名作为文本的复选框添加到CheckBoxList时,还应该在复选框之前或之后添加Gravatar控件,显示用户的相应显示图片。我想到的另一种方法是使用复选框和gravatar来设置自定义用户控件。但如果有任何其他精简和简单的解决方案可用,那么请建议我。以下是代码:

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

如您所见,它还有一个列表框,其中包含checkboxlist中的所选项目。如果可能的话,请为列表框建议我。

1 个答案:

答案 0 :(得分:3)

Repeater控件适用于此。它允许您绑定到数据源并创建项目应如何显示的模板。

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

我将此Repeater绑定到以下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", "test@superexpert.com");
    dt.Rows.Add("user_two", "test@superexpert.com");
    dt.Rows.Add("user_three", "test@superexpert.com");
    return dt;
}