2011-01-31 22 views
0

我的DataTable以編程方式生成,並在單元格中包含JobInstance類型的對象。如何將具有複雜數據對象的DataTable綁定到GridView?

DataTable dataTable = new DataTable();

// first column - label 
dataTable.Columns.Add("JobType", typeof(string)); 

// other columns (data-driven) 
foreach(string config in Configurations) 
{ 
    DataColumn col = new DataColumn(config, typeof(JobInstance)); // !!! 
    dataTable.Columns.Add(col); 
} 

// rows 
foreach(string jobType in JobTypes) 
{ 
    DataRow row = dataTable.NewRow(); 
    row["JobType"] = jobType; 

    foreach(string config in Configurations) 
    { 
     row[config] = GetJobInstance(jobType, config); // returns a JobInstance object 
    } 

    dataTable.Rows.Add(row);  
} 

當我結合這個數據表到ASP的GridView,它僅顯示第一列。但是,如果在創建列(行// !!!)時刪除「typeof(Job)」,則GridView通過顯示單元格中JobInstance.ToString()的結果顯示所有列。但是,我無法訪問底層的JobInstance對象,只有正在顯示的字符串值。

我需要在顯示GridView時訪問JobInstance對象(例如在OnRowDataBound中),因爲我想訪問JobInstance中每個單元格的字段以確定格式選項,並在每個單元格中添加其他鏈接。

這可能嗎?

謝謝。

回答

1

是的,這是可能的。

爲您的JobInstance定義一個新類,並將其中的字段放入其中,爲了清晰起見,請將它放在單獨的文件中。

在你的aspx

後臺代碼,定義一個List<JobInstance>集合,然後填寫它的JobInstance的情況下,該列表將分配給你的`的GridView的DataSource」。

爲了能夠訪問List<JobInstance>的實例,請使列表成爲aspx頁面類中的字段成員。

希望有幫助,讓我知道你是否需要任何幫助。

+0

嗯,我不想顯示JobInstance的字段作爲列。我的列是獨立定義的,每個單元格都是一個JobInstance。但最後我做了類似於你所建議的事情,並直接在行/列中訪問我的數據結構結構中的對象,因爲似乎沒有辦法按照我想要的方式實際將對象綁定到gridview。 – ewerx 2011-02-02 21:15:22