2011-05-19 163 views
1

我有一個gridview,我做了可編輯。這有效......有點。ASP.NET GridView - 對象引用未設置爲對象的實例

現在我試圖更新與新數據一行。

該行有樣柱:

=========================

|時間|日期|項目|等等

=========================

我試圖挽救的出現,因爲我編輯框中的內容連續編輯

我這樣做,是這樣的方式:

TextBox time = (TextBox) GridView1.Rows[e.RowIndex].FindControl("txtTime");

--linq-object-reference--.time = Convert.ToInt32(time.Text);

但是我收到一個錯誤...任何人都知道爲什麼嗎?

編輯:

爲了澄清我的問題......我想找出如何在這幅畫取內容的TextBoxes,如: enter image description here

EDIT2:

好的,這裏的確切的錯誤... enter image description here

+0

你如何在gridview中顯示時間我的意思是什麼格式(01:30,12:00 am/pm或1.30)我認爲你的時間的字符串表示不能轉換爲整數。 – Devjosh 2011-05-19 08:54:01

+0

日期不應該是一個問題,但它顯示爲'yyyy-MM-dd HH:mm tt'例如。日期時間。但是,我的時間字段表示「小時,分鐘」用於任務/項目,無論如何...... :) – KristianB 2011-05-19 08:57:09

+0

您得到的確切錯誤是什麼? – 2011-05-19 09:10:35

回答

0

我不確定5,417-05-2011 14:15:31是您的txtTime TextBox中的文本,但這些都不能轉換爲整數。對於第一個字段,您可能需要一些自定義字符串解析,第二個字段應該可以使用Convert.ToDateTime(time.Text)

編輯:

好了,你的錯誤消息是有點混亂,因爲它說的錯誤是在Convert.ToDouble,但你已經把Convert.ToInt32在你的問題。無論如何,你有一個NullReferenceException,所以要麼linqObject爲空(所以你不能訪問time財產),或time爲空(所以你不能訪問Text財產)。也許一些空檢會幫助你。

另一編輯:

好了,你真正的問題是你不能讓你的txtTime文本框的參考。您可能需要爲您的GridView發佈一些標記,併爲事件處理程序提供一些代碼。這裏有一些建議:

  • 如果你調試到你的事件處理程序,檢查e.RowIndex的值 - 確保這對應於正確的行。
  • 確保您在代碼隱藏中使用的ID字符串與標記中的ID完全相同。
  • 你使用的是什麼UpdatePanels,或者GridView正在更新客戶端?
  • ViewState關閉了嗎?
+0

* *我的問題/問題是** _HOW_我指向特定的TextBoxes嗎?數據驗證/解析根本不是問題。但它說它無法找到名爲'txtTime'的控件... – KristianB 2011-05-19 09:19:28

+0

對不起,我的部分是錯誤的...應該是'Convert.ToInt32' – KristianB 2011-05-19 09:21:24

0

時間不應該保存爲數據庫中的整數。最好將它作爲日期時間保存在數據庫中。因此將日期時間類型設置爲 - -linq-object-reference - 。time

然後使用下面的代碼轉換您的textBox字符串值(HH:MM - >如:03:45)爲DateTime使用下面的代碼:

using System.Globalization; 

--linq-object-reference--.time=DateTime.ParseExact(time.Text,"HH:mm", CultureInfo.InvariantCulture); 

希望這將解決問題...

相關問題