2013-07-16 66 views
0

我目前與ASP的數據綁定:NET標籤如下:綁定值:標籤不知道列名

<ItemTemplate> 
    <asp:Label ID="hhmIdLabel" runat="server" Text='<%# Eval("name") %>'/> 
</ItemTemplate> 

不過,我想不需要我綁定的解決方案由於我們之後的解決方案將使用多個不同的表格(均具有相同的結構,但列名不同),所以按列名稱排列的數據。

這是我在C#中的後端:

SqlCommand selectCommand = new SqlCommand("select CRY_HHM_ID, CRY_HRY_KEY from [WH_EXT].[dbo]." + tablesDropDownList.SelectedItem.ToString()+" where "+colName+"= '"+selectedChildKey+"'", myConnection); 
myReader = selectCommand.ExecuteReader(); 

DataTable dt = new DataTable(); 
dt.Load(myReader); 

this.selectedLeafGridView.Visible = true; 
selectedLeafGridView.DataSource = dt; 
selectedLeafGridView.DataBind(); 

一個類似這樣的LINK可能是有意義的解決方案,但是,我不明白它是如何工作的:

<ItemTemplate> 
    <%# ((DbDataRecord)Container.DataItem).GetString(0)%> 
</ItemTemplate> 

我會很高興要麼讓這個工作,要麼提出可能的替代方案,取決於哪個最好。

+3

即使在表中的列名是不同的,你可以將它們別名到同一通用名:'選擇COL1爲[CommonColumnName]從table'如果 –

+0

不知道我理解正確你的問題,但你可以不要將標籤綁定到數據庫中隨機的東西。您需要指定列。像「名稱」標籤應該綁定到數據庫中的「名稱」列。除非您將手動生成的DataTable綁定到Data控件。 – Learner

+0

查詢多個表時,列的數量是否不變? – SpaceApple

回答

0

不要將您的數據層代碼與您的GUI代碼混合。

你應該綁定到一個(你創建的)一個(集合)........和SEPARATELY .........用這些對象填充(一個集合)不同的業務邏輯/數據層調用。

[Serializable] 
public class ValueHolder 
{ 
    public string Value01 { get; set; }       
    public string Value02 { get; set; }  
} 

public class ValueHolderCollection : List<ValueHolder> 
{}