5

在 asp.net 中,我在数据库中有一个表格,其中包含问题、提交日期和答案。在页面加载时只出现问题。现在我想使用任何链接,点击显示答案和表格数据中指定的日期,在文本框或标签中并再次单击该链接答案再次消失,就像单击时展开和缩小一样。那么我应该在 C# 中使用什么编码呢?

4

1 回答 1

8

我相信您可以处理中继器的ItemCommand事件。

在Repeater 的项目模板中为您希望用户单击的链接放置一个LinkBut​​ton 控件。将此的 CommandName 属性设置为有意义的值,例如“ShowAnswers”。此外,将 Label 或 TextBox 控件添加到 Repeater 的项目模板中,但在 aspx 标记中将其 Visible 属性设置为 false。

在代码隐藏中,在 ItemCommand 事件处理程序中检查 的值是否e.CommandName等于您的命令(“ShowAnswers”)。如果是这样,则在该Repeater 项目(通过访问)中找到答案和日期的标签或文本框控件e.Item。找到它们后,将它们的 Visible 属性设置为 true。

注意:您可以使用 AJAX 采用不同的方法为用户提供更无缝的体验,但这种方法最初可能更容易实现。

我认为实现看起来像这样。免责声明:我没有测试过这段代码。

代码隐藏:

void Repeater_ItemCommand(Object Sender, RepeaterCommandEventArgs e)
{
    if (e.CommandName == "ShowAnswers")
    {
        Control control;

        control = e.Item.FindControl("Answers");
        if (control != null)
            control.Visible = true;

        control = e.Item.FindControl("Date");
        if (control != null)
            control.Visible = true;
    }
}

ASPX 标记:

<asp:Repeater id="Repeater" runat="server" OnItemCommand="Repeater_ItemCommand">
  <ItemTemplate>
    <asp:LinkButton id="ShowAnswers" runat="server" CommandName="ShowAnswers" />
    <asp:Label id="Answers" runat="server" Text='<%# Eval("Answers") %>' Visible="false" />
    <asp:Label id="Date" runat="server" Text='<%# Eval("Date") %>' Visible="false" />
  </ItemTemplate>
</asp:Repeater>
于 2013-02-13T20:12:35.997 回答