如何将多个列绑定到gridview asp.net中的单个行?

时间:2014-12-02 13:54:38

标签: asp.net sql-server sql-server-2008 gridview

我正在制定一个账单定制项目,其中描述了客户需求:

首先是一个发票明细表:     例如(表结构和值)

Particulars  InvoiceNo  InvoiceDate InvoiceQty  UnitOfMeasurement Rate   Amount  Currency
Apple        I-90       2-12-2014   1000         Kg               8      8000     INR

它可以包含多个条目..但 InvoiceNo将是不同的

现在另一张表包含发票的损坏明细(用于保险目的)

e.g。 (发票损坏明细表):

Particular  InvoiceNo  invoiceqty  AffectedQty UOM  Rate Remarks
Apple       I-90        1000       100         Kg   8    Pressed so waste
Apple       I-90        1000       500         Kg   8    Smelled And waste

现在,如上所述,特定可以包含不同数量的不同原因。

最后和最后一个表包含所有信息,客户要求以下格式,以便为其客户和用户提供便捷的访问权限:

-----------------------------------------------------------------------------------------
Particular | InvoiceNo | Date     | Qty |       Claimed        |       Assessed         |
           |           |          |     |------------------------------------------------
           |           |          |     |Qty  | Rate | Amount  | Qty  | Rate  | Amount  |
-----------------------------------------------------------------------------------------
                                        |100  | 8    | 800     | 100  | 8     | 800       
Apple      | I-90      |2-12-2014 |1000 |500  | 8    | 4000    | 500  | 8     | 4000
-----------------------------------------------------------------------------------------
                 Total :           1000 | 600          4800    | 600          | 4800 

这里我想显示总数量(总数),即1000公斤,声称数量:600     ClaimedAmount:4800 ..评估数量:600 ..评估金额:4800

可能会有所有者可以编辑的评估数量,金额和费率也可能会有所不同,但主要和重要的是如何针对多列Claimed And Assessed描述显示一行。

Sql Storage背后的代码如下:

ALTER PROCEDURE [dbo].[InsertTable] @claimID VARCHAR(25) = ''
,@Updateby VARCHAR(70) = ''
,@AffectedQty VARCHAR(30) = ''
,@myTableType MyTableType1 readonly
,@myInvoiceTable MyInvoiceTableNew readonly
AS
-- here MyTableType1 and MyInvoiceTableNew  are user defined data types 
BEGIN
BEGIN TRY
    BEGIN TRANSACTION

    DELETE
    FROM InvoiceDetail
    WHERE Claim_ID = @claimID

    INSERT INTO InvoiceDetail (
        Claim_ID
        ,Currency
        ,Particulars
        ,InvoiceNo
        ,InvoiceDate
        ,Invoice_Qty
        ,UOM
        ,Rate
        ,Amount
        ,UpdateBy
        ,UpdateDate
        ,STATUS
        )
    SELECT @claimID
        ,Currency
        ,Particulars
        ,InvoiceNo
        ,InvoiceDate
        ,Invoice_Qty
        ,UOM
        ,Rate
        ,Amount
        ,@Updateby
        ,convert(DATETIME, GETDATE(), 103)
        ,1
    FROM @myInvoiceTable

    DELETE
    FROM Invoice_Damage_Detail
    WHERE Claim_ID = @claimID

    INSERT INTO Invoice_Damage_Detail (
        Claim_ID
        ,Particulars
        ,InvoiceNo
        ,Invoice_Qty
        ,Affected_Qty
        ,UOM
        ,Rate
        ,Remarks
        ,UpdateBy
        ,UpdateDate
        ,STATUS
        )
    SELECT @claimID
        ,Particulars
        ,InvoiceNo
        ,Invoice_Qty
        ,Affected_Qty
        ,UOM
        ,Rate
        ,Remarks
        ,@Updateby
        ,convert(DATETIME, GETDATE(), 103)
        ,1
    FROM @myTableType

    DELETE
    FROM Invoice_Final_Assessment_Details
    WHERE ClaimID = @claimID

    INSERT INTO Invoice_Final_Assessment_Details (
        ClaimID
        ,Particular
        ,InvoiceNo
        ,InvoiceDate
        ,InvoiceQty
        ,ClaimedQty
        ,ClaimedRate
        ,ClaimedAmount
        ,ClaimedUOM
        ,AssessedQty
        ,AssessedRate
        ,AssessesAmount
        ,Createdate
        ,UpdateDate
        ,UpdatedBy
        ,IsDeleted
        )
    SELECT @claimID
        ,mt2.Particulars
        ,mt2.InvoiceNo
        ,mt2.InvoiceDate
        ,mt2.Invoice_Qty
        ,mt.Affected_Qty
        ,mt2.Rate
        ,(CONVERT(BIGINT, isnull(mt2.Invoice_Qty, 0)) * Convert(BIGINT, isnull(mt.Rate, 0))) AS ClaimedAmount
        ,mt2.UOM
        ,mt.Affected_Qty
        ,mt.Rate
        ,(CONVERT(BIGINT, isnull(mt.Affected_Qty, 0)) * Convert(BIGINT, isnull(mt.Rate, 0))) AS ClaimedAmount
        ,GETDATE()
        ,GETDATE()
        ,@Updateby
        ,0
    FROM @myTableType mt
    JOIN @myInvoiceTable mt2 ON 1 = 1

    COMMIT TRANSACTION
END TRY

BEGIN CATCH
    ROLLBACK TRANSACTION
END CATCH
END

现在加入1 = 1 我在数据库中应用它会重复行数和发票数量,所有数量都会增加一倍且无法使用。

0 个答案:

没有答案