有時依照 project 需求我們可能需要從數據庫取得多組 DataTable再自行撰碼以自己想要的格式呈現在 ASPNET 頁面中而非直接綁定至 GridView 控件中時即可參考下列做法
若要從數據庫的多個 table 中 Join 數據並將撈取的多筆 record (數量不定)多個 column以自訂的格式呈現在 ASPNET 頁面上時我們可先將撈取的數據暫時擱置在內存的多個 DataTable 裡 (一個 DataTable 數組)再依想要的樣式呈現做法可參考本站之前的帖子「使用 ADONET 的 NextResult 方法取得多個 Result Set 」先透過 SqlCommand取得從數據庫多個 table 中 Join 得到的數據再將此SqlCommand 指派給一個 SqlDataAdapter接著透過 SqlDataAdapter 的 Fill 方法將取自多個 table 的數據填入內存裡的多個 DataTable 中 (一個 DataTable 數組)且在 ADONET 中DataTable 不再需要依附在 DataSet 上重點代碼如下
SqlConnection conn = new SqlConnection(Web
Config中的數據庫連結字符串);
SqlDataAdapter da = new SqlDataAdapter();
SqlCommand cmd = new SqlCommand();
cmd
Connection = conn;
cmd
CommandText =
這裡填入第一組 SELECT 和 JOIN 等 SQL statement ;
;
cmd
CommandText +=
這裡填入第二組 SELECT 和 JOIN 等 SQL statement
;
da
SelectCommand = cmd;
DataTable[] dtArray = new DataTable[]
{
new DataTable(
第一組 SQL statement 的 table 名稱
)
new DataTable(
第二組 SQL statement 的 table 名稱
)
};
// Fill(startRecord
maxRecords
DataTable數組名稱)
da
Fill(
dtArray);
conn
Open();
// 將第一個 DataTable (dtArray[
]) 的內容呈現在頁面的控件上
for (int i =
; i < dtArray[
]
Rows
Count; i++)
{
// 在這裡將第一個 DataTable 的內容
以自訂格式呈現在頁面的控件上
}
// 亦可直接將 DataTable 指派給 GridView 控件
GridView
DataSource = dtArray[
]
DefaultView;
From:http://tw.wingwit.com/Article/program/net/201311/14997.html