5

asp.netには、質問、提出日、および回答を含むデータベース内のテーブルがあります。ページの読み込み時に質問のみが表示されます。今、テキストボックスまたはラベルのいずれかで、テーブルデータで指定された回答と日付をクリックすると表示されるリンクを使用したいそのリンクの回答をもう一度クリックすると、クリックすると拡大および縮小するように、再び消えます。では、C# でこれを行うにはどのコーディングを使用すればよいでしょうか?

4

1 に答える 1

8

リピーターのItemCommandイベントを処理できると思います。

ユーザーがクリックするリンクのLinkBut​​tonコントロールをRepeaterのアイテムテンプレートに配置します。これのCommandNameプロパティを、「ShowAnswers」などの意味のあるものに設定します。また、LabelまたはTextBoxコントロールをRepeaterのアイテムテンプレートに追加しますが、aspxマークアップ内でそれらのVisibleプロパティをfalseに設定します。

コードビハインドで、ItemCommandイベントハンドラー内で、の値がe.CommandNameコマンド( "ShowAnswers")と等しいかどうかを確認します。その場合は、そのリピーター項目(からアクセス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 に答える