DataView.Count()返回多个值

时间:2015-06-04 17:47:58

标签: c# database winforms visual-studio-2013 dataview

我对这一切都不熟悉,所以我会尽量做到尽可能具体。 我正在尝试创建一个按钮,它将以另一种形式显示两个日期。所以我写了这个:

DataView dv = new DataView(dataComercioDataSet.Comex);
dv.Sort = "Id";
int ixe = dv.Find(idTextBox.Text);
DateTime embarque = Convert.ToDateTime(dv[ixe]["FechaEmbarque"]);
otherForm.fechaEmbarqueDateTimePicker.Value = embarque;
DateTime vencimiento = Convert.ToDateTime(dv[ixe]["FechaVencimiento"]);
otherForm.fechaVencimientoDateTimePicker.Value = vencimiento;
otherForm.idBox1.Text = dv[ixe]["Id"].ToString();
this.comexTableAdapter.FillBy3(this.dataComercioDataSet.Comex, c41TextBox.Text);

现在,当我单击按钮时,它会捕获一个异常,显示它是一个DBNull对象。所以我决定通过添加这个来测试它:

if (dv.Count == 1)
{
    MessageBox.Show("1");
}
if (dv.Count == 0) ;
{
    MessageBox.Show("0");
}

它显示了两者!由于异常声明它是DBNull,我认为dv.find必须返回0,所以我想这个:

if (ixe == 0)
{
    ixe = 1;
    DateTime embarque = Convert.ToDateTime(dv[ixe]["FechaEmbarque"]);
    otherForm.fechaEmbarqueDateTimePicker.Value = embarque;
    DateTime vencimiento = Convert.ToDateTime(dv[ixe]["FechaVencimiento"]);
    otherForm.fechaVencimientoDateTimePicker.Value = vencimiento;
    otherForm.idBox1.Text = dv[ixe]["Id"].ToString();

    this.comexTableAdapter.FillBy3(this.dataComercioDataSet.Comex, c41TextBox.Text);
}

但是,当我这样做时,例外是索引1是负数或优于行数(它是西班牙语,我不知道这是否是实际翻译) 无论如何,我想我不太了解DataView.Find()实际上如何索引结果,我的意思是,第1行= 1还是0?

提前致谢!

1 个答案:

答案 0 :(得分:0)

管理解决此问题,以某种方式改变

DataView dv = new DataView(dataComercioDataSet.Comex);

 DataView dv = new DataView();
          dv = dataComercioDataSet.Comex.AsDataView();

解决了这个问题,但不确定为什么......