我有一个gridview,我做了可编辑的。这有点......有点。
现在我正在尝试使用新数据更新一行。
该行包含以下列:
=========================
|时间|日期|项目|等等|
=========================
我正在尝试保存显示为编辑一行的编辑框的内容。
我这样做是这样的:
TextBox time = (TextBox) GridView1.Rows[e.RowIndex].FindControl("txtTime");
--linq-object-reference--.time = Convert.ToInt32(time.Text);
但我收到错误......有人知道为什么吗?
修改
澄清我的问题......我想知道如何获取那些TextBoxes
的内容,如下图所示:
EDIT2:
好的,这是完全错误...
答案 0 :(得分:0)
我不确定5,4
或17-05-2011 14:15:31
是txtTime
TextBox中的文本,但这两种文本都不能转换为整数。对于第一个字段,您可能需要一些自定义字符串解析,而对于第二个字段,您应该能够使用Convert.ToDateTime(time.Text)
。
修改强>
好的,您的错误消息有点令人困惑,因为它说错误在Convert.ToDouble
,但您已将Convert.ToInt32
放在您的问题中。无论如何,你有一个NullReferenceException
,所以linqObject
为空(因此你无法访问time
属性),或time
为空(所以你可以不能访问Text
属性。也许一些空检查会帮助你。
另一个编辑:
好的,所以你真正的问题是你无法获得对txtTime
TextBox的引用。您可能需要为GridView发布一些标记,并为事件处理程序发布一些代码。以下是一些建议:
e.RowIndex
的值 - 确保这对应于正确的行。答案 1 :(得分:0)
不应将时间保存为数据库中的整数。最好将它作为DateTime保存在database.So中。将 -linq-object-reference - .time 设置为Datetime类型。
然后使用以下代码将textBox字符串值(HH:mm - >例如:03:45)转换为DateTime ,使用以下代码:
using System.Globalization;
--linq-object-reference--.time=DateTime.ParseExact(time.Text,"HH:mm", CultureInfo.InvariantCulture);
希望这能解决问题...