2016-06-24 13 views
2

私はいくつかの特別な出荷ルールを持つ電子商取引サイトを持っています。特定の時刻にDataBind()

基本的に、特定の製品の貨物タイプは、送料が無料であるかどうか、またはカート内のすべての費用の合計に基づいていないかどうかを決定します。複数の貨物種別(約13種類)があり、これらを貨物種別のショッピングカート(ヘッダーのような識別子とともに)で表示する必要があります。

現在のショッピングカートは、所定のフィールド(productImage、itemId、nameなど)に基づいてデータをバインドするテーブルです。私がしなければならないことは、すべてのアイテムを貨物タイプで並べ替え、各貨物タイプの冒頭に1行を挿入して貨物タイプを指定することです。私の現在のアプローチは、各アイテムの貨物のタイプを確認し、後でDataBind()を使用したいリストに追加することです。

DataBind()は、オーバーライドすることなく複数回使用することはできません。例:

//This works 
try 
{ 
    base.DataSource = cart.Items; 
    base.DataBind(); 
} 

//This doesn't work 
if (freightTypeOne.Count != 0) { 
    try 
    { 
     base.DataSource = freightTypeOne; //freightTypeOne is a list of Items 
     base.DataBind(); 
    } 
    catch 
    { 
     //handle exceptions 
    } 
}  
if (freightTypeTwo.Count != 0) { 
    try 
    { 
     base.DataSource += freightTypeTwo; //freightTypeTwo is a list of Items 
     base.DataBind(); 
    } 
    catch 
    { 
     //handle exceptions 
    } 
} 

+ =私が見ているものからは使用できず、=は情報を上書きします。私はまた、この境界のあるデータの間に新しい行を挿入するのに問題があります。 データの前後にのみ行を挿入できます。

基本的には、上記の方法を使用して、私はこれを私の最終結果(または類似のもの)として得ることができますか?

if (freightTypeOne.Count != 0) { 
    try 
    { 
     // add new GridViewRow with TD that has: "Freight Type One" spanning full row 
     base.DataSource = freightTypeOne; 
     base.DataBind(); 
    } 
    catch 
    { 
     //handle exceptions 
    } 
}  
if (freightTypeTwo.Count != 0) { 
    try 
    { 
     // add new GridViewRow with TD that has: "Freight Type Two" spanning full row 
     base.DataSource += freightTypeTwo; 
     base.DataBind(); 
    } 
    catch 
    { 
     //handle exceptions 
    } 
} 

これはすべて役立ちます。データはデータベースから取得され、このコードはCreateChildControls()オーバーライドにあります。私を許してください。しかし、私はむしろ.NETに新しいので、私には簡単に行きます。

答えて

2

上記のコードでは、カウントを確認する必要はありません。空のコレクションでも問題ありません。

nullと一致しません(つまり、必要な場合は、あなたのコレクションがヌルでないことを確認してください)。

仮定

データソース変数タイプList<T>、例えば:List<FreightType>です。私はあなたの質問(私が間違っているかもしれない)で単語 'リスト'を使用して以来、この仮定をしました。

注:クラスにはまだSystem.Linq名前空間が必要です(まだ持っていない場合があります)。

+0

素晴らしい、それはそれをソートするために働いた。今度は、各貨物タイプの前に行を追加する方法を理解する必要があります。 – FranticJ3

+0

行を追加するには、バインドする前にリストを操作する必要があります。リスト内のアイテムをループし、各貨物タイプの前に追加する行とともに新しいリストに追加することができます。 –

+0

@ClintB私はそれが私がする必要があることを正確にはわかりません。リストの項目は問題ありません。各リストの前にテーブルに新しい行を追加するだけです。私はちょうどそれを行う方法とデータバインド()に含めるか分からない – FranticJ3

関連する問題