2010-11-16 41 views
5

我有以下類(僞):你可以將asp.net gridview綁定到基類中的字段嗎?

  • 項目(INT字段1)
  • ItemDetail:項目(INT字段2,串字段3)

如果我設置ItemDetail作爲數據源爲asp.net gridview:

grid.DataSource = new List<ItemDetail>(); 
grid.DataBind(); 

我可以在GridView中使用Field1嗎?如果是這樣,那麼正確的DataBinder語法是什麼?下面的代碼炸燬試圖投射到一個項目:

<%# DataBinder.Eval(Container.DataItem, "Field1") %> 

在此先感謝您的任何幫助。

編輯:而我是一個白癡。我已經複製了gridview,併爲另一個網格調用了一個RowDataBound事件處理程序......很抱歉浪費了每個人的時間,但是這裏有一些很好的信息,無論任何人有同樣的問題。最終,基類的公共屬性綁定正確。謝謝!

+0

作爲一種變通方法,我添加getter方法子類返回基地場......不能成爲解決方案雖然... – IronicMuffin 2010-11-16 15:31:39

+0

IronicMuffin,我編輯使用一個代碼塊你的問題,而不是'pre' HTML標記(您只需要縮進4個空格或使用代碼按鈕) - 希望我已經得到您的標記! – 2010-11-16 15:32:24

+0

當它爆炸時,你會得到什麼例外? – 2010-11-16 15:34:01

回答

1

如果您的基類屬性是公共的,只要您還在子構造函數中初始化它,就不應該有問題。另外,我不確定您的示例綁定是否爲僞代碼,但您必須將網格綁定到IListSource,IEnumerable或IDataSource,因此您需要ItemDetails的Collection,List,IQueryable等。

+0

好點,編輯。 – IronicMuffin 2010-11-16 15:42:44

+0

這就是我的想法。有可能是別的事情就在這裏...... – IronicMuffin 2010-11-16 15:44:06

+0

您可以發佈有關類的一些信息?我剛剛測試了這個自己要加倍肯定,也沒有問題,參考從子類的基類屬性。 – jwiscarson 2010-11-16 15:45:28

-1

這將需要你的ItemDetail類有一個名爲Field1的屬性。其餘的語法雖然很好。

<%# DataBinder.Eval(Container.DataItem, "Field1") %>

ItemDetal itemDetail = new ItemDetail(); 
itemDetail.Field1 = 100; 
  • 其中字段1是accessable財產,而不是隻在類的私人領域。 這應該在網格中寫出100。
+0

好吧,但重點是我想從基類中使用Field1,而不是在子類中複製它。有特殊的DataBinder語法來擊中基類嗎?我沒有看到有關這種特殊情況的太多文件。 – IronicMuffin 2010-11-16 15:38:01

+0

如果所有的標記出現問題,你可以隨時使用OnItemDataBound事件,以獲得正確的價值觀了。但正如jwiscarson所說,它應該是可訪問的,並且記得綁定一個項目/ itemdetails列表。 – Heki 2010-11-16 15:44:32

相關問題