2011-09-21 32 views
1

私はCheckBoxListを使用して、GridViewに表示される列を定義しています。私は、ユーザーが、彼らが表示したい(それらのさまざまなデータ型の)列を選択した後、彼らはボタンを押すとVBのコードの次のスニペットは、GridViewコントロールを生成フォーマットBoundFieldデータ型動的に

select column_name, data_type from information_schema.columns 
    where table_name = 'myTable' 

のようなクエリを使用してCheckBoxListのを移入します。

私がしたいのは、DataFormatStringを 'date'データ型の列にのみ適用することです。しかし、私はバインドされている列のデータの型をプログラムで判断する方法は見つけられませんでした。この情報をControlに渡す方法はありません。この情報は、私の質問に示されているように、information_schemaに存在しますが、私はそれを抜き出してに動的に私のBoundFieldsを設定する方法を知らない。私はSqlDataSourceを使用していることに注意することが重要です。

私は考えることができるすべての可能な解決策を試して、ここで終わります。あなたの助けを事前に

おかげで、それが非常に高く評価され:)

答えて

1

をあなたはこのようなあなたのチェックボックスのリストを設定した場合:

<asp:checkboxlist id="list" runat="server" 
DataTextField="column_name" DataValueField="data_type" DataSourceID="YourDSID" /> 

をあなたは項目を反復処理することができると確認する必要がありますそのような現在の項目の値:

For Each item As ListItem In chooseColsList.Items 
    If item.Selected Then 
     Dim bf As New BoundField() 

     If StrComp(item.Value,"date") = 0 Then 'Or however datetime is returned 
      bf.DataFormatString = "{0:dd-MMM-yyyy}" 
      bf.ApplyFormatInEditMode = True 
     End If 
     bf.DataField = item.Text 
     bf.HeaderText = item.Text 
     bf.SortExpression = item.Text 
     statusReportGrid.Columns.Add(bf) 
    End If 
Next 
+0

は確かに、私もそう思ったが、これはそれがスローする例外です: 'System.Web.HttpException:名「varchar型」がフィールドまたはプロパティが見つかりませんでしたに選択されたデータソース。 – Chiramisu

+0

ああああ。私たちはどちらも私たちのゲームから離れていると思うよ、笑。私がVBコードで評価しているフィールドを見てください。私はitem.Valueを使用していましたが、それはdata_typeなので、item.Textに切り替える必要がありました。今それは動作します。私の脳のおならを消していただきありがとうございます:) – Chiramisu

関連する問題