2009-03-19 14 views
2

私は、GridViewに製品を表示するASP.Net 2.0 Webサイトを維持しています。クライアントは、10行ごとに「カートに追加」ボタンを表示できるかどうか尋ねました。私はボタンを自分の列に置き、視界を変えることでこれを行うことができましたが、10個のアイテムごとに新しい行を挿入できるかどうかは疑問でした。これは、ボタンをそれ自身の行に置き、表示されていないときには列スペースを占有しません。 これを行う方法についてのご意見はありますか? TIAGridViewに行を挿入できますか?

+0

あなたが本当に1.1を意味しています:あなたはあなたがそう選択したいずれかの行の後にカスタムコントロールを挿入するために、次のコードビハインド使用することができます

<asp:Repeater id="repeater" runat="server"> <ItemTemplate> <h1><%#Container.DataItem%></h1> </ItemTemplate> </asp:Repeater> 

を?その場合、あなたはおそらくDataGridやその他のものを参照していますので、それを確認して質問を更新してください – eglasius

+0

なぜOPは本当に1.1を意味するのでしょうか? –

+0

私はもともと1.1と言っていたが、フレディのコメント後には2.0に変更したので。 – Sisiutl

答えて

5

GridViewに行を挿入することは非常に困難です。リピーターの使用について考えましたか?

次のマークアップを考える:

using System; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Collections.Generic; 

public partial class Default : Page 
{ 
    protected override void OnInit(EventArgs e) 
    { 
     this.repeater.ItemCreated += repeater_ItemCreated; 

     base.OnInit(e); 
    } 

    protected override void OnLoad(EventArgs e) 
    { 
     this.repeater.DataSource = new List<String> 
     { 
      "one", "two", "three", "four", "five", "six", "seven" 
     }; 

     this.repeater.DataBind(); 

     base.OnLoad(e); 
    } 

    void repeater_ItemCreated(Object sender, RepeaterItemEventArgs e) 
    { 
     if (this.repeater.Items.Count > 0 
      && this.repeater.Items.Count % 3 == 0) 
     { 
      this.repeater.Controls.Add(new LiteralControl("<h4>hello world</h4>")); 
     } 
    } 
} 
2

GridViewで(ソースに侵入することなく)これを直接実行するとは思われません。しかし、あなたができることは、GridViewがレンダリングされた後に、いくつかのJavaScriptを使ってボタンのHTMLをページのDOMに挿入することです。

グリッドビューによって作成されたテーブルのすべての行を繰り返して、10行ごとに新しい行(すべてのセルまたは単一の列スパンセル)を作成します。そのセルの中にonClickでボタンを挿入して、javascriptルーチンを呼び出して、カートにアイテムを追加します。

関連する問題