Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 错误:无法删除约束;在RadGrid中绑定记录时_C#_Sql_Asp.net_Stored Procedures_Tableadapter - Fatal编程技术网

C# 错误:无法删除约束;在RadGrid中绑定记录时

C# 错误:无法删除约束;在RadGrid中绑定记录时,c#,sql,asp.net,stored-procedures,tableadapter,C#,Sql,Asp.net,Stored Procedures,Tableadapter,下面是我使用存储过程绑定RadGrid的代码 我正在使用.xsdfile-TableAdapter方法调用存储过程 HTML代码: <telerik:RadGrid ID="rgData" runat="server" ShowFooter="true" OnNeedDataSource="rgData_NeedDataSource" AllowSorting="True" AllowFilteringByColumn="True" ShowGroupPanel="True" GroupL

下面是我使用
存储过程绑定
RadGrid
的代码 我正在使用
.xsd
file-
TableAdapter
方法调用
存储过程

HTML代码:

<telerik:RadGrid ID="rgData" runat="server" ShowFooter="true"
OnNeedDataSource="rgData_NeedDataSource"
AllowSorting="True" AllowFilteringByColumn="True" ShowGroupPanel="True" GroupLoadMode="Client"
EnableEmbeddedSkins="False" ImagesPath="../App_Themes/MetroRed/Grid" Skin="MetroRed">
   <ClientSettings AllowDragToGroup="True"></ClientSettings>
   <GroupingSettings ShowUnGroupButton="false" CaseSensitive="false"></GroupingSettings>
   <MasterTableView ShowGroupFooter="true" CommandItemDisplay="None" AutoGenerateColumns="false" AllowMultiColumnSorting="true">
   <CommandItemSettings ShowAddNewRecordButton="false" />
    <Columns>
           <telerik:GridBoundColumn HeaderText="Billing ID" DataField="BillingID" SortExpression="BillingID" FilterDelay="2000" ShowFilterIcon="false">
       </telerik:GridBoundColumn>
       <telerik:GridBoundColumn HeaderText="Direct Cost" DataField="DCIDescription" SortExpression="DCIDescription" FilterDelay="2000" ShowFilterIcon="false">
       </telerik:GridBoundColumn>
           <telerik:GridBoundColumn HeaderText="Business Unit" DataField="BUName" SortExpression="BUName" FilterDelay="2000" ShowFilterIcon="false">
           </telerik:GridBoundColumn>
    </Columns>
   </MasterTableView>
</telerik:RadGrid>
private DataTable _dtData = null; 

protected void rgData_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
    {
        try
        {
            _dtData = SDM.Invoice.GetInvoiceBySPID(_SPID);
            rgData.DataSource = _dtData;
        }
        catch (Exception ex)
        {
        }
    }
#region Invoice
private static SDM_Invoice _Invoice = null;
public static SDM_Invoice Invoice
{
    get
    {
        if (_Invoice == null)
        _Invoice = new SDM_Invoice();

        return _Invoice;
    }
}
#endregion

private SDM_Tran_GenerateInvoiceTableAdapter _GenerateInvoiceTableAdapter = null;
protected SDM_Tran_GenerateInvoiceTableAdapter Adapter
{
    get
    {
        if (_GenerateInvoiceTableAdapter == null)
                _GenerateInvoiceTableAdapter = new SDM_Tran_GenerateInvoiceTableAdapter();

            return _GenerateInvoiceTableAdapter;
    }
} 

public SDMDAL.SDM_Tran_GenerateInvoiceDataTable GetInvoiceBySPID(string SPID)
{
    return Adapter.GetInvoiceBillingBySPID(SPID);
}
ALTER PROCEDURE [dbo].[Select_InvoiceBillingBySPID]
    @SPID as nvarchar(50)
    AS
BEGIN

    SET NOCOUNT ON; 

SELECT 
--B.ID,
B.BillingID, 
DCIDescription,
(SELECT BUName FROM dbo.SDM_Master_BU WITH (NOLOCK) WHERE BUID=AfoBUID) as BUName

FROM SDM_Tran_Billing B WITH (NOLOCK),
dbo.SDM_Tran_DCI D WITH (NOLOCK), 
dbo.SDM_Tran_Allocation A WITH (NOLOCK)

WHERE B.BfoAllocationID=AllocationID 
and A.AfoDCIID=D.DCIID 
and D.DCIfoSPID=@SPID
and B.BfoStatusID=1

END
BLL文件夹中的类文件:

<telerik:RadGrid ID="rgData" runat="server" ShowFooter="true"
OnNeedDataSource="rgData_NeedDataSource"
AllowSorting="True" AllowFilteringByColumn="True" ShowGroupPanel="True" GroupLoadMode="Client"
EnableEmbeddedSkins="False" ImagesPath="../App_Themes/MetroRed/Grid" Skin="MetroRed">
   <ClientSettings AllowDragToGroup="True"></ClientSettings>
   <GroupingSettings ShowUnGroupButton="false" CaseSensitive="false"></GroupingSettings>
   <MasterTableView ShowGroupFooter="true" CommandItemDisplay="None" AutoGenerateColumns="false" AllowMultiColumnSorting="true">
   <CommandItemSettings ShowAddNewRecordButton="false" />
    <Columns>
           <telerik:GridBoundColumn HeaderText="Billing ID" DataField="BillingID" SortExpression="BillingID" FilterDelay="2000" ShowFilterIcon="false">
       </telerik:GridBoundColumn>
       <telerik:GridBoundColumn HeaderText="Direct Cost" DataField="DCIDescription" SortExpression="DCIDescription" FilterDelay="2000" ShowFilterIcon="false">
       </telerik:GridBoundColumn>
           <telerik:GridBoundColumn HeaderText="Business Unit" DataField="BUName" SortExpression="BUName" FilterDelay="2000" ShowFilterIcon="false">
           </telerik:GridBoundColumn>
    </Columns>
   </MasterTableView>
</telerik:RadGrid>
private DataTable _dtData = null; 

protected void rgData_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
    {
        try
        {
            _dtData = SDM.Invoice.GetInvoiceBySPID(_SPID);
            rgData.DataSource = _dtData;
        }
        catch (Exception ex)
        {
        }
    }
#region Invoice
private static SDM_Invoice _Invoice = null;
public static SDM_Invoice Invoice
{
    get
    {
        if (_Invoice == null)
        _Invoice = new SDM_Invoice();

        return _Invoice;
    }
}
#endregion

private SDM_Tran_GenerateInvoiceTableAdapter _GenerateInvoiceTableAdapter = null;
protected SDM_Tran_GenerateInvoiceTableAdapter Adapter
{
    get
    {
        if (_GenerateInvoiceTableAdapter == null)
                _GenerateInvoiceTableAdapter = new SDM_Tran_GenerateInvoiceTableAdapter();

            return _GenerateInvoiceTableAdapter;
    }
} 

public SDMDAL.SDM_Tran_GenerateInvoiceDataTable GetInvoiceBySPID(string SPID)
{
    return Adapter.GetInvoiceBillingBySPID(SPID);
}
ALTER PROCEDURE [dbo].[Select_InvoiceBillingBySPID]
    @SPID as nvarchar(50)
    AS
BEGIN

    SET NOCOUNT ON; 

SELECT 
--B.ID,
B.BillingID, 
DCIDescription,
(SELECT BUName FROM dbo.SDM_Master_BU WITH (NOLOCK) WHERE BUID=AfoBUID) as BUName

FROM SDM_Tran_Billing B WITH (NOLOCK),
dbo.SDM_Tran_DCI D WITH (NOLOCK), 
dbo.SDM_Tran_Allocation A WITH (NOLOCK)

WHERE B.BfoAllocationID=AllocationID 
and A.AfoDCIID=D.DCIID 
and D.DCIfoSPID=@SPID
and B.BfoStatusID=1

END
绑定RadGrid的存储过程:

<telerik:RadGrid ID="rgData" runat="server" ShowFooter="true"
OnNeedDataSource="rgData_NeedDataSource"
AllowSorting="True" AllowFilteringByColumn="True" ShowGroupPanel="True" GroupLoadMode="Client"
EnableEmbeddedSkins="False" ImagesPath="../App_Themes/MetroRed/Grid" Skin="MetroRed">
   <ClientSettings AllowDragToGroup="True"></ClientSettings>
   <GroupingSettings ShowUnGroupButton="false" CaseSensitive="false"></GroupingSettings>
   <MasterTableView ShowGroupFooter="true" CommandItemDisplay="None" AutoGenerateColumns="false" AllowMultiColumnSorting="true">
   <CommandItemSettings ShowAddNewRecordButton="false" />
    <Columns>
           <telerik:GridBoundColumn HeaderText="Billing ID" DataField="BillingID" SortExpression="BillingID" FilterDelay="2000" ShowFilterIcon="false">
       </telerik:GridBoundColumn>
       <telerik:GridBoundColumn HeaderText="Direct Cost" DataField="DCIDescription" SortExpression="DCIDescription" FilterDelay="2000" ShowFilterIcon="false">
       </telerik:GridBoundColumn>
           <telerik:GridBoundColumn HeaderText="Business Unit" DataField="BUName" SortExpression="BUName" FilterDelay="2000" ShowFilterIcon="false">
           </telerik:GridBoundColumn>
    </Columns>
   </MasterTableView>
</telerik:RadGrid>
private DataTable _dtData = null; 

protected void rgData_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
    {
        try
        {
            _dtData = SDM.Invoice.GetInvoiceBySPID(_SPID);
            rgData.DataSource = _dtData;
        }
        catch (Exception ex)
        {
        }
    }
#region Invoice
private static SDM_Invoice _Invoice = null;
public static SDM_Invoice Invoice
{
    get
    {
        if (_Invoice == null)
        _Invoice = new SDM_Invoice();

        return _Invoice;
    }
}
#endregion

private SDM_Tran_GenerateInvoiceTableAdapter _GenerateInvoiceTableAdapter = null;
protected SDM_Tran_GenerateInvoiceTableAdapter Adapter
{
    get
    {
        if (_GenerateInvoiceTableAdapter == null)
                _GenerateInvoiceTableAdapter = new SDM_Tran_GenerateInvoiceTableAdapter();

            return _GenerateInvoiceTableAdapter;
    }
} 

public SDMDAL.SDM_Tran_GenerateInvoiceDataTable GetInvoiceBySPID(string SPID)
{
    return Adapter.GetInvoiceBillingBySPID(SPID);
}
ALTER PROCEDURE [dbo].[Select_InvoiceBillingBySPID]
    @SPID as nvarchar(50)
    AS
BEGIN

    SET NOCOUNT ON; 

SELECT 
--B.ID,
B.BillingID, 
DCIDescription,
(SELECT BUName FROM dbo.SDM_Master_BU WITH (NOLOCK) WHERE BUID=AfoBUID) as BUName

FROM SDM_Tran_Billing B WITH (NOLOCK),
dbo.SDM_Tran_DCI D WITH (NOLOCK), 
dbo.SDM_Tran_Allocation A WITH (NOLOCK)

WHERE B.BfoAllocationID=AllocationID 
and A.AfoDCIID=D.DCIID 
and D.DCIfoSPID=@SPID
and B.BfoStatusID=1

END
.xsd文件-表适配器



每当我运行我的网页时,我都会遇到以下错误:

未能删除无法删除的约束。一行或多行包含值 违反非空、唯一或外键约束

我认为错误是因为我在存储过程中使用3个不同的表(它们有自己的主键)绑定RadGrid中的数据,然后将这个存储过程调用到另一个有自己主键的表适配器中。但我不确定我理解的原因是否正确

请注意,当我运行Sql查询向导中的存储过程时,它工作正常,但当我运行我的页面时,会出现上述错误

但是我必须使用3个表绑定RadGrid(如上所示)


请让我知道如何解决此错误。提前谢谢

在代码行下方替换:

_dtData = SDM.Invoice.GetInvoiceBySPID(_SPID); 
与:

因为,
Invoice
TableAdapter/Table在其数据库表中已经有主键,
我正在使用其他数据库表,这些表有自己的主键,
Invoice
TableAdapter/Table,因此它给了我错误。 问题解决了