我想要新建一个用户资料,这个用户资料还没有存在于users这个表,当我点击新建,在初始化页面的时候,在UserDataSet.Designer.cs页面抛出异常
“The value for column 'TelNumber' in table 'Users' is DBNull.”
我查看了UserDataSet.Designer.cs抛出异常的代码
public string TelNumber { get { try { return ((string)(this[this.tableUsers.TelNumberColumn])); } catch (global::System.InvalidCastException e) { throw new global::System.Data.StrongTypingException("The value for column \'TelNumber\' in table \'Users\' is DBNull.", e); } } set { this[this.tableUsers.TelNumberColumn] = value; } }
然后我修改为
public string TelNumber { get { if (this.IsTelNumberNull()) { return null; } else { return ((string)(this[this.tableUsers.TelNumberColumn])); } } set { this[this.tableUsers.TelNumberColumn] = value; } }
这样子修改后就正常了,但是我完全不知道为什么
因为UserDataSet.Designer.cs的代码都是自动生成的,请问我这样子修改会出问题吗?能这样子修改吗?
应该没什么问题,但是你新建的时候为什么要去获取值?
我不太明白你说的“新建的时候为什么要去获取值”
但是我是在已经存在的表中插入一列,然后为了方便测试,我又把这列赋值了,用sql
alter table 表名 add 列名 valuetype
update 表名 set 列名=value
是不是我这样赋值才导致它会去获取值有什么不妥?
劳烦前辈赐教
我现在修改这里
txtTelNumber.Text = (dsUser.Users[0].IsTelNumberNull() ? DBNull.Value : CommonUtil.ConvertDBParameter(dsUser.Users[0].TelNumber)).ToString();
这样子改,然后也能避免出现错误,但是我不知道哪个方法更好一点
@rivahuang: 这个好,我大约明白你的意思了,你的用户资料有些是没有填写,有些原来就填写了?你这相当与修改?
@稳稳的河: 对,如果是新建用户资料,那么就是没有,这时候页面就报错,但是如果去修改用户资料,因为可能已经有数据,所以不会报错,修改和新建都是在一个页面userDetails.aspx