我们有一个数据绑定数据网格,它显示了正在使用的产品数量。
顾名思义,它有一个额外的列来指定调整此数量的金额。
定义绑定源的LINQ to SQL是
public BindingList<MeterRead> QryMeterRead
{
get
{
var list = new BindingList<MeterRead>();
list.AllowNew = false;
list.AllowRemove = false;
var records = ExecuteQuery<MeterRead>(
@"select
mr.meter_rd_id,
mr.meter_id,
mr.read_dt,
mr.prev_dt,
mr.reading,
mr.demand_reading,
mr.usage,
mr.orig_usage,
mr.prev_usage,
mr.estimated,
mr.kvar_reading,
mr.change_out_from_id,
mr.multi_mtr_est,
adjust_dt = convert(datetime, null),
usage_adjust = convert(integer, null),
measure_id = convert(integer, null),
mr.location_id,
'customer_id' = {0},
'group_id' = {1}
from ub_meter_read mr (nolock)
where mr.meter_id = {2}
order by meter_rd_id desc", usageparams.read_customer_id, usageparams.read_group_id, usageparams.read_meter_id);
if (records != null)
{
foreach (MeterRead rec in records)
{
list.Add(rec);
}
}
return list;
}
}
其中adjust_dt
,usage_adjust
和measure_id
是添加的字段。它们不存在于表中,但允许进行数据调整。
在我们表单的数据网格上,单击“保存”按钮时,可以在数据中进行更改以进行提交。
对表单进行一些更改,例如更改数字usage_adjust
值,基础LINQ数据源选择这些更改。
一切都很好。
如果有人(比如测试部门的人员)决定通过删除usage_adjust
值来删除这些更改,那么LINQ似乎正在尝试绑定它们 - 为数据网格抛出误导性的空引用错误。 / p>
我猜其他人已经遇到过这种情况,但我不知道该怎么称呼它或如何搜索这种类型的错误情况。
有谁知道解决此类问题的好方法?
答案 0 :(得分:0)
目前,将usage_adjust
默认值设为0
已停止错误。
const string sqlfrmt =
@"select
mr.meter_rd_id,
mr.meter_id,
mr.read_dt,
mr.prev_dt,
mr.reading,
mr.demand_reading,
mr.usage,
mr.orig_usage,
mr.prev_usage,
mr.estimated,
mr.kvar_reading,
mr.change_out_from_id,
mr.multi_mtr_est,
adjust_dt = convert(datetime, null),
usage_adjust = convert(integer, 0),
measure_id = convert(integer, null),
mr.location_id,
'customer_id' = {0},
'group_id' = {1}
from ub_meter_read mr (nolock)
where mr.meter_id = {2}
order by meter_rd_id desc";
现在,数据网格不是空白,而是包含0
,我在更新例程中提供了代码,以跳过调整0
的字段。
partial void UpdateMeterRead(MeterRead instance)
{
try
{
if (instance.usage_adjust != 0)
{
sp_ub_adjust_usage(instance.location_id, instance.meter_id, instance.group_id, instance.adjust_dt, instance.usage_adjust,
instance.meter_rd_id, instance.measure_id, instance.customer_id, BaseContext.CurrentSpid);
}
}
catch (Exception err)
{
Console.WriteLine(err);
}
}
如果有人在接下来的一两个月内提出解决此问题的解释,我会接受他们的回答。
我以后编辑文件的路径:
Drive:\ICIS_7V04T52\in\Main\in\o\in.o.ub\am\Readings\ua\DataDB\uaDB.cs