Error: Failed to unable constraints.. ;when binding records in RadGrid
Error: Failed to unable constraints.. ;when binding records in RadGrid
下面是我使用存储过程绑定 RadGrid 的代码。我正在使用 .xsd
文件调用存储过程 - 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>
C#代码:
private DataTable _dtData = null;
protected void rgData_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
{
try
{
_dtData = SDM.Invoice.GetInvoiceBySPID(_SPID);
rgData.DataSource = _dtData;
}
catch (Exception ex)
{
}
}
Class BLL文件夹内的文件:
#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);
}
绑定 RadGrid 的存储过程:
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 文件 - Table 适配器
每当我 运行 我的网页时,我都会收到以下错误:
Failed to unable constraints. One or more rows contain values
violating non null, unique or foreign key constraints.
我认为错误是因为我在存储过程中使用 3 个不同的表(它们有自己的主键)绑定 RadGrid 中的数据,然后将此存储过程调用到其他一些 Table 适配器中自己的主键。但是不确定我理解的原因是否正确。
请注意,当我 运行 Sql 查询向导中的存储过程工作正常但是当我 运行 我的页面出现上述错误时。
但我必须使用 3 个表(如上)绑定 RadGrid。我该如何解决这个错误?
替换为以下代码行:
_dtData = SDM.Invoice.GetInvoiceBySPID(_SPID);
与:
_dtData = SDM.Billing.GetBillingBySPID(_SPID);
因为,Invoice
TableAdapter/Table 的数据库中已经有主键 table 并且
我正在使用其他数据库 table,它有自己的主键主键,带有 Invoice
TableAdapter/Table 因此它给了我错误。
问题已解决。
下面是我使用存储过程绑定 RadGrid 的代码。我正在使用 .xsd
文件调用存储过程 - 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>
C#代码:
private DataTable _dtData = null;
protected void rgData_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
{
try
{
_dtData = SDM.Invoice.GetInvoiceBySPID(_SPID);
rgData.DataSource = _dtData;
}
catch (Exception ex)
{
}
}
Class BLL文件夹内的文件:
#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);
}
绑定 RadGrid 的存储过程:
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 文件 - Table 适配器
每当我 运行 我的网页时,我都会收到以下错误:
Failed to unable constraints. One or more rows contain values violating non null, unique or foreign key constraints.
我认为错误是因为我在存储过程中使用 3 个不同的表(它们有自己的主键)绑定 RadGrid 中的数据,然后将此存储过程调用到其他一些 Table 适配器中自己的主键。但是不确定我理解的原因是否正确。
请注意,当我 运行 Sql 查询向导中的存储过程工作正常但是当我 运行 我的页面出现上述错误时。
但我必须使用 3 个表(如上)绑定 RadGrid。我该如何解决这个错误?
替换为以下代码行:
_dtData = SDM.Invoice.GetInvoiceBySPID(_SPID);
与:
_dtData = SDM.Billing.GetBillingBySPID(_SPID);
因为,Invoice
TableAdapter/Table 的数据库中已经有主键 table 并且
我正在使用其他数据库 table,它有自己的主键主键,带有 Invoice
TableAdapter/Table 因此它给了我错误。
问题已解决。