ASP.NET GridView-对象引用未设置为对象的实例
我有一个gridview,可以编辑。这很有效。。。有点 现在我正试图用新数据更新一行 该行包含如下列: ========================= |时间|日期|项目|等| ========================= 我正在尝试将显示为“我编辑”的编辑框的内容保存为一行 我是这样做的:ASP.NET GridView-对象引用未设置为对象的实例,asp.net,linq,Asp.net,Linq,我有一个gridview,可以编辑。这很有效。。。有点 现在我正试图用新数据更新一行 该行包含如下列: ========================= |时间|日期|项目|等| ========================= 我正在尝试将显示为“我编辑”的编辑框的内容保存为一行 我是这样做的: TextBox time=(TextBox)GridView1.Rows[e.RowIndex].FindControl(“txtTime”) --linq对象引用--.time=Convert.
TextBox time=(TextBox)GridView1.Rows[e.RowIndex].FindControl(“txtTime”)代码>
--linq对象引用--.time=Convert.ToInt32(time.Text)代码>
但我收到一个错误。。。有人知道为什么吗
编辑:
为了澄清我的问题。。。我想了解如何获取这些文本框的内容,如下图所示:
EDIT2:
好的,这里是确切的错误…我不确定5,4
或17-05-2011 14:15:31
是否是txtTime
文本框中的文本,但它们都不能转换为整数。对于第一个字段,您可能需要一些自定义字符串解析,对于第二个字段,您应该能够使用Convert.ToDateTime(time.Text)
编辑:
好的,您的错误消息有点让人困惑,因为它说错误在Convert.ToDouble
中,但您在问题中加入了Convert.ToInt32
。无论如何,您有一个NullReferenceException
,因此linqObject
为null(因此您无法访问time
属性),或者time
为null(因此您无法访问Text
属性)。也许一些空检查可以帮你解决问题
另一个编辑:
好吧,那么你真正的问题是你无法获得对txtTime
文本框的引用。您可能需要为GridView发布一些标记,并为事件处理程序发布一些代码。以下是一些建议:
- 如果在事件处理程序中进行调试,请检查
e.RowIndex
的值-确保该值对应于正确的行
- 确保您在代码隐藏中使用的ID字符串与标记中的ID完全相同
- 您是否正在使用任何UpdatePanel,或者GridView是否正在客户端更新
- ViewState是否已关闭
时间不应保存为数据库中的整数。最好将其保存为数据库中的DateTime。因此,将您的--linq对象引用--.time设置为DateTime类型
然后使用以下代码将文本框字符串值转换为日期时间,使用以下代码:
using System.Globalization;
--linq-object-reference--.time=DateTime.ParseExact(time.Text,"HH:mm", CultureInfo.InvariantCulture);
希望这能解决问题…您如何在gridview中显示时间我是指什么格式(01:30、12:00am/pm或1.30)我认为您的时间的字符串表示不能转换为整数。日期应该不是问题,但它显示为yyyy-MM-dd HH:MM-tt
例如DateTime。但我的时间字段表示为任务/项目花费的小时、分钟
,无论什么…)您得到的确切错误是什么?NullReferenceException-对象引用未设置为对象的实例。
@Line:linqObject.time=Convert.ToDouble(time.Text)代码>@Graham Clark:他得到的对象引用未设置为对象的实例我的问题是如何指向特定的文本框?数据验证/解析根本不是问题。但是它说它找不到名为txtTime
的控件…对不起,这是我的错误复制。。。应该是Convert.ToInt32