2011-11-01 70 views
1

我有一個gridview,其中每列有兩個模板字段。一個是ItemTemplate,另一個是EditItemTemplate。現在在EditItemTemplate中將顯示一些文本框,我可以在其中執行必要的編輯。我可以很容易地從各小區通過使用下面的代碼 -如何在ASP.NET 2的ItemTemplate中的gridview中獲取數據

Dim gvRow As GridViewRow = gvView.Rows(e.RowIndex) 

CType(gvRow.FindControl("controlID"), TextBox).Text 

取數據,但我怎樣才能獲取數據時,網格視圖不在該處於ItemTemplate中編輯模式。我試過以下 -

Dim rowView As DataRowView = CType(gvRow.DataItem, DataRowView) 

Dim something As String = rowView("data_field").ToString() 

但是它獲取異常對象引用沒有設置爲對象的一個​​實例。這可能是因爲在實例化一行時,上面的代碼應該用在像RowDataBound這樣的方法中。但我必須從其他方法獲取數據。任何想法如何做到這一點。

再次澄清,我想要在GridView列處於ItemTemplate模式時獲取數據。

回答

1

我想你想在某些命令中讀取網格視圖列的值。如果您有gvRow這是您的gridview的行,那麼您可以使用.Cell(index).Text以獲得該列的值。

如果使用模板字段並使用某些控件顯示列數據,則必須執行gvRow.findControl("controlId"),然後將其轉換爲適當的控件對象以從中讀取數據。

快樂編碼

+0

不,我已經試過。無論我做什麼.Cell(index).Text返回「」。這是一個空字符串。 –

+0

你正在使用哪個事件?請在這裏發佈aspx和vb/cs代碼,以便我們可以提供很多幫助 –

+0

我正在使用onClick事件。整個代碼不能給出。看看下面的一行。我究竟做錯了什麼 ?? Dim test As As String = Me.gvView.Rows(index).Cells(index).Text雖然有一個值,但我最終的測試設置爲「」 –

1

您可能會考慮直接訪問gridview數據源。如果您允許在網格上進行排序/分頁,請謹慎操作,因爲數據源中的索引將有所不同。

-1

兩個答案很好,非常感謝你。

我花了更多的時間試圖獲得GridView單元格的值,但無用,我不知道是什麼問題。當我閱讀你的答案時,我發現我的GridView有模板字段,所以這就是問題所在。

+0

這不是一個答案!這應該在評論中(如果需要的話) – Zerotoinfinity

相關問題