如何将SQL server 2005中的游标值检索到ASP.NET 2.0中的gridview?

如何将SQL server 2005中的游标值检索到ASP.NET 2.0中的gridview?,asp.net,sql-server-2005,Asp.net,Sql Server 2005,我根据条件检索两个或多个表数据,因此我在SQL Server 2005中编写如下游标: create PROC [dbo].[uspCustomerInvoiceGetlist] @CustomerID varchar(20) AS BEGIN SELECT DeleteStatus,InvoiceID,CONVERT(varchar(16),CreationDate,101) + ' ' + CONVERT(varchar(16),CreationDate,8)

我根据条件检索两个或多个表数据,因此我在SQL Server 2005中编写如下游标:

create PROC [dbo].[uspCustomerInvoiceGetlist]
    @CustomerID varchar(20)
AS
BEGIN

    SELECT DeleteStatus,InvoiceID,CONVERT(varchar(16),CreationDate,101) + ' ' +
       CONVERT(varchar(16),CreationDate,8) as CreationDate,AccountNumber,Sum(Amount) as Amount from tblInvoiceDetails where CustomerID=@CustomerID Group By InvoiceID,CreationDate,AccountNumber,DeleteStatus
END

alter procedure uspCustomerInvoiceGetlist1(@CustomerID varchar(50)) as 
    Begin
        Declare @InvoiceID int, @Balance float
        Declare MyCur Cursor for select InvoiceID from tblInvoiceHeader where CustomerID=@CustomerID
        Open MyCur
        Fetch next from mycur into @InvoiceID
        While @@Fetch_Status=0 
        Begin
        set @Balance=(select sum(Balance) from tblInvoicePaymentDetails where CustomerId=@CustomerID and InvoiceId=@InvoiceID)
print @Balance      
if @Balance!=0

        SELECT h.DeleteStatus,h.InvoiceID,CONVERT(varchar(16),h.CreationDate,101) + ' ' +
       CONVERT(varchar(16),h.CreationDate,8) as CreationDate,h.AccountNumber,Sum(h.Amount) as Amount, @Balance as Balance from tblInvoiceDetails h inner join tblInvoicePaymentDetails p on h.CustomerID=p.CustomerID and h.InvoiceID=@InvoiceID
  Group By h.InvoiceID,h.CreationDate,h.AccountNumber,h.DeleteStatus
else
SELECT DeleteStatus,InvoiceID,CONVERT(varchar(16),CreationDate,101) + ' ' +
       CONVERT(varchar(16),CreationDate,8) as CreationDate,AccountNumber,Sum(Amount) as Amount, 0 as Balance from tblInvoiceDetails where CustomerID=@CustomerID and InvoiceID=@InvoiceID Group By InvoiceID,CreationDate,AccountNumber,DeleteStatus 

            Fetch Next From MyCUr into @InvoiceID
        End
        Close Mycur
        Deallocate Mycur
    End
   dt1.Merge(dt2);        //dt1 is the DataTable 1 and dt2 is the DataTable 2
输出是这样正确的(基于条件2的两个输出更多)



但是我可以在ASP.NET2.0中绑定网格视图中的所有值(两者)。怎么可能呢?

在前端,您将得到两个DataTable。 您只需将这两个数据表合并为一个数据表。 并将DataTable与GridView绑定。 像这样合并:

create PROC [dbo].[uspCustomerInvoiceGetlist]
    @CustomerID varchar(20)
AS
BEGIN

    SELECT DeleteStatus,InvoiceID,CONVERT(varchar(16),CreationDate,101) + ' ' +
       CONVERT(varchar(16),CreationDate,8) as CreationDate,AccountNumber,Sum(Amount) as Amount from tblInvoiceDetails where CustomerID=@CustomerID Group By InvoiceID,CreationDate,AccountNumber,DeleteStatus
END

alter procedure uspCustomerInvoiceGetlist1(@CustomerID varchar(50)) as 
    Begin
        Declare @InvoiceID int, @Balance float
        Declare MyCur Cursor for select InvoiceID from tblInvoiceHeader where CustomerID=@CustomerID
        Open MyCur
        Fetch next from mycur into @InvoiceID
        While @@Fetch_Status=0 
        Begin
        set @Balance=(select sum(Balance) from tblInvoicePaymentDetails where CustomerId=@CustomerID and InvoiceId=@InvoiceID)
print @Balance      
if @Balance!=0

        SELECT h.DeleteStatus,h.InvoiceID,CONVERT(varchar(16),h.CreationDate,101) + ' ' +
       CONVERT(varchar(16),h.CreationDate,8) as CreationDate,h.AccountNumber,Sum(h.Amount) as Amount, @Balance as Balance from tblInvoiceDetails h inner join tblInvoicePaymentDetails p on h.CustomerID=p.CustomerID and h.InvoiceID=@InvoiceID
  Group By h.InvoiceID,h.CreationDate,h.AccountNumber,h.DeleteStatus
else
SELECT DeleteStatus,InvoiceID,CONVERT(varchar(16),CreationDate,101) + ' ' +
       CONVERT(varchar(16),CreationDate,8) as CreationDate,AccountNumber,Sum(Amount) as Amount, 0 as Balance from tblInvoiceDetails where CustomerID=@CustomerID and InvoiceID=@InvoiceID Group By InvoiceID,CreationDate,AccountNumber,DeleteStatus 

            Fetch Next From MyCUr into @InvoiceID
        End
        Close Mycur
        Deallocate Mycur
    End
   dt1.Merge(dt2);        //dt1 is the DataTable 1 and dt2 is the DataTable 2
将表集获取为DataSet并使用For循环进行合并:我给出了以下代码:

  DataTable dtmerge = new DataTable();
  for (int i = 0; i < ds.Tables.Count; i++)             // ds is the DataSet
  {
      dtmerge.Merge(ds.Tables[i]);
  }
DataTable dtmerge=newdatatable();
for(int i=0;i
假设根据条件显示两个或两个以上的表,当您希望合并并遵循相同的操作时,如何获得所有数据表。