2011-12-07 13 views
1

テーブルに4行を返すストアドプロシージャがあります。各列は1人がホテルに泊まる日に対応しているので、リピーターをバインドすると4行が表示されます。 2つの列は同じ部屋で、他の2つは同じ部屋です。私はクレジットカードの情報を表示するだけでなく、それはこのようなものになりますので、同じ部屋のすべてのセットのために、個々の部屋のために:リピーターにバインドされたすべての行のデータを表示しないようにリピーターを変更するにはどうすればよいですか?

2011年12月7日ルームを1

12/2011分の8ルーム1

クレジットカード情報

2011年12月7日ルーム2

2011年12月8日ルーム2

クレジットカード情報

ルーム情報とクレジット情報をそれぞれ1つの行に結合したくありません。これを私が望むようにフォーマットするにはどうすればいいですか?

現在、ItemTemplateにルーム情報を表示しています.ItemTemplateの内部には、trとtdがあります。

+1

あなたが情報を返すときには、必要な情報を保持するDictionary を作成して部屋番号をキーとして使用することができます。部屋番号をもう一度追加するのをスキップして、クレジットカード情報をオブジェクトに追加するだけです。 Dictionary <>はContains()メソッドを使用してキーが既にリストにあるかどうかを確認するか、動的配列string [] strArray = {}を作成してDataReaderからアイテムをロードするか、 – MethodMan

+0

@DJKRAZEを作成することができます - 私はあなたが言っているものを手に入れたと思います。可能であれば、あなたのコメントを回答に書式設定できますか? – Xaisoft

答えて

-2
//Create either a HashTable() 
//or a Dictionary<int, string[]> I would personally use a Dictionary<> 

//create an instance of what ever collection you want to use or array 
    //List<string> 
    //Dictionary<int, string[]>() using the room number as the key 
    // you would add the values to either the List<> or a String[] array or a Dictionary 
keey in mind that if you want to create a dynamic string[] array and you do not know how many elements you are going to add just use a List<> or Dictionary<int,string> 
and you can always convert that object using .ToArray 
so for example 


List<string> lstRoomList = new List<string>(); 
string[] arrayRoom = {}; 
if you have a DataReader for example and you are doing something like 
while (yourdataReader.Read()) 
{ 
    // here you can decide how you are going to work with the data you 
    lstRoomList.Add(datareader["roomnubmer"] + " " + datareader[CreditCarInfo]; 
} 
at the end you could assign the values of that list to a dynamic array 
arrayRoom = kstRoomList.ToArray(); I would really need to see what you are using and how you are returning the StoredProc results.. 
+0

ストアドプロシージャは、クレジットカード情報を含む各部屋を返送しています。コードでは、データテーブルを返してから、リピータをデータテーブルにバインドし、evalを使用してデータテーブルから各値をバインドします。 – Xaisoft

+0

追加された部屋を追跡し、現在の部屋!=前の部屋の場合は、前の部屋のクレジット情報を追加します。 – Xaisoft

+0

これはContains()関数を持っているため、HashTableを使って行うことができます。独自のコントロールブレークタイプのプロセスを作成することもできます。あなたが持っているものを貼り付け、辞書やハッシュを使用する方法これはあなたの呼び出しです。文字列[、]を使用してこれを行うこともできます。多くのオプション – MethodMan

0

あなたは基本的に2つのオプションがあります。あなたは、前処理することができ、データをどのようなリピータにバインドされていることは、あなたがユーザに提示したいものを表すように - DJ KRAZEはそれを行うための一つの方法を示しています。

もう1つのオプションは、ItemDataBound event handlerを追加し、その時点でデータおよび/または現在の行を操作することです。

2番目のアプローチの欠点の1つは、決定を下すために前の行にアクセスする必要があることです。これは、結果がページングされている場合など、複雑になる可能性があります。

関連する問題