2016-10-17 6 views
-1

SQL SELECTに基づいてデータソースからグリッドビューをバインドしようとしています。列が存在しないときにグリッドビューをバインドする

ただし、文から戻されたデータによっては、データソースに列が存在しないことがあります。私は1つのgridviewが欲しい。

GridView1.DataBind()にエラーがスローされないようにバインディングを処理するにはどうすればよいですか?他のオプションは、ASPXの列を定義し、それがすべて定義されていないことであろう

DataTable dt = GetMyDataFromDatabase(); 
if (dt.Rows.Count > 0) 
{ 
    if (!dt.Columns.Contains("MyColumn")) 
    { 
     //do whatever, maybe add the missing column?... 
     dt.Columns.Add("MyColumn", typeof(String)); 
    } 
} 

答えて

2
あなたがこれをやっているか

かなりわからないが、あなたは少し、このようなコードの列を確認することができますコード内でRowDataBoundRowCreatedイベントをオフにします。

1

最も簡単な方法は、すべてのクエリ結果に常に列が存在することを確認することです。必要に応じてダミー列を挿入することで、エラーを回避できます。例えば、これは、あなたのデフォルトのクエリ

SELECT columnA, columnB, columnC FROM yourDB 

ある場合

それはcolumnB

SELECT columnA, NULL AS columnB, columnC FROM yourDB 

が不足している場合は、このようなダミーの列を挿入したり、columnAが欠落している場合、それは整数であります値を持たなければならない

SELECT 0 AS columnA, columnB, columnC FROM yourDB 

GridViewでAutoGenerateColumns="true"を使用してください。しかし、これはあなたに設計やレイアウトのコントロールを与えません。

関連する問題