asp:Repeater 経由で生成されたテーブルに折りたたみ可能なエントリを実装する最もクリーンな方法は?

StackOverflow https://stackoverflow.com/questions/77082

  •  09-06-2019
  •  | 
  •  

質問

誰かがテーブルタグを完全に廃止することを提案する前に、私は非常に大規模なシステムのこの部分を変更しているだけなので、テーブル構造を修正することは実際には賢明ではありません(アプリには同様のテーブルがいっぱいあります)。

これは C# .NET の Web アプリです。データは Web サービスから取得され、画面上のテーブルに表示されます。テーブルの行は asp:Repeaters を使用して生成されるため、行は適切にカラーを交互に配置します。以前は、テーブルには行ごとに 1 つのデータ項目が保持されていました。さて、基本的に、テーブルにはサブヘッダーがあります...最初の行は日付、2 行目はデータ行を示し、新しい日付のデータが入力されるまで次の行はすべてデータ行になります。新しい日付のデータが入力されると、別のサブヘッダー行が表示されます。

最初は、少しごまかして、現在のリピーター構造を維持するためにこれを非常に簡単に実行できるのではないかと考えました。必要なのは、一部のセルに空の文字列を入力して、データが表示されないようにするだけです。ただし、ここでは、すべてのデータを折りたたむことができるように、各日付の横にある +/- 折りたたみ機能の 1 つを検討しています。ボタンが押されたときに行を非表示にすることがすぐに頭に浮かびました...しかし、行に一意のIDがない限り、コードビハインドから行を非表示にする方法がわかりません。また、リピーターでそれができるかどうかもわかりません。

問題をうまく表現できたと思います。きっと方法は見つかると思いますが、ちょうどスラッシュドットでこのサイトを見て、ちょっと試してみようと思いました:)

役に立ちましたか?

解決

データバインディング イベントで行を作成するときに、データ フィールドの ID などを使用して一意の識別子を追加できます。または、それを一意にするために使用します。

次に、最初にデータを入力したい場合は、クライアント側のメソッドを使用して折りたたみを展開し、表の行要素の Javascript の style.display 設定を切り替えることができます。

他のヒント

項目テンプレートのコンテンツを asp:Panel でラップするだけで、一意の ID が得られます。 それから投げ込みます いくつかのjQuery スパイスとして ;)

編集:テーブルを使用していることに気づきました。行にIDを入れます。それを切り替えます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top