仅显示datagridview的第一行

时间:2015-08-10 15:46:13

标签: c# datagridview localdb

我有两张桌子Invoice,Invoice2

Invoice有很多列,如invoiceno,itemcode,itemrate等

虽然Invoice2只有一个列invoiceno,其值与Invoice表

中的值相同

我想在两个表中显示数据库中具有相同invoiceno的行 它正在这样做

现在我要做的是只从Invoice表中检索那些只属于Invoice2表中的“第一个”invoiceno的行

我为第一个,下一个,上一个,最后一个

创建按钮

所以当我第一次点击时,它应该显示属于两个表中常见的第一个invoicno的行

我正在使用datagridview来显示数据

windows窗体,c#

SqlDataAdapter adpt = new SqlDataAdapter("Select invoices.itemcode, invoices.itemname,invoices.quantity,invoices.itemrate from invoices, invoice where invoices.invoiceno= invoice.invoiceno ", con);

        adpt.Fill(ds, "invoices");


        if (ds.Tables[0].Rows.Count > 0)
        {
            DataRow row = new DataRow();
            int i = 0;
            row.Cells[0].Value = ds.Tables[0].Rows[i]["itemcode"].ToString();
            row.Cells[1].Value = ds.Tables[0].Rows[i]["itemname"].ToString();
            row.Cells[2].Value = ds.Tables[0].Rows[i]["itemrate"].ToString();
        }

      dataGridView2.DataSource = ds.Tables["invoices"];

1 个答案:

答案 0 :(得分:0)

您应该在查询中执行订单以排序结果集,然后

DataView view = new DataView(ds.Tables[0]);
DataTable distinctInvoiceNumbers = view.ToTable(true, "invoiceno");
//clear datagrid rows here
 DataTable dt=new Datatable();
 dt = ds.Tables[0].Clone();
 int index=0;// zero if first is clicked, increase index for each next button click
 foreach(datarow dr in ds.Tables[0].Rows)
  {
   if(distinctInvoiceNumbers.Rows[0][index].ToString()==dr[0].ToString())
    {
      dt.ImportRow(dr);//add matching rows to datatable
    }
  }
  datagridview1.DataSource=dt;