最好的重载方法匹配...有一些无效的参数

时间:2015-07-24 03:18:04

标签: c# asp.net dataset tableadapter

我在我的项目中的DataSet(" SDMDAL.xsd")中使用DataAdapter(" SDM_Tran_GenerateInvoice")。

下面是DataAdapter的结构以及其中的存储过程名称: enter image description here

下面是我使用的表结构: enter image description here

我在类文件中将此DataAdapter称为 SDM.InvoiceBLL.cs

using SDMDALTableAdapters;

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

            return _GenerateInvoiceTableAdapter;
        }
    }

    #region GET
    //to show data in Invoice Grid
    public SDMDAL.SDM_Tran_GenerateInvoiceDataTable SelectInvoice(string _SPID)
    {
        return Adapter.SelectInvoice(_SPID);
    }
    //to show data in 1st hidden Grid
    public SDMDAL.SDM_Tran_GenerateInvoiceDataTable GetInvoiceBillingBySPID(string _SPID)
    {
        return Adapter.GetInvoiceBillingBySPID(_SPID);
    }
    //to fetch InvoiceID for unique key generation
    public SDMDAL.SDM_Tran_GenerateInvoiceDataTable GetInvoiceID()
    {
        return Adapter.GetInvoiceID();
    }
    //to fetch InvoiceNumber for unique key generation
    public SDMDAL.SDM_Tran_GenerateInvoiceDataTable GetInvoiceNumber()
    {
        return Adapter.GetInvoiceNumber();
    }
    #endregion   

    public string Insert(string InvoiceID, string SPfoID, string InvoiceLineNo, string InvoiceNo, string InvoiceType, string BillingIDfoID, string BusinessUnit, string DirectCost, string InvfoStatusID, string Status, DateTime Date, string AccountCode)
    {
        string query = Convert.ToString(Adapter.Insert1(InvoiceNo, SPfoID, InvoiceLineNo, InvoiceNo, InvoiceType, BillingIDfoID, BusinessUnit, DirectCost, InvfoStatusID, Status, Date, AccountCode));
        return query;
    }

    public SDM_Invoice()
    {

    }
}

然后调用" Insert" Default.aspx.cs 页面内的类文件功能,用于保存点击按钮的记录:

 protected void btnInvoice_Click(object sender, EventArgs e)
{
    generateInvoiceId();
    generateInvoiceNumber();

    string InvType = rlbInvType.SelectedValue;
    string Status = "Draft";

    string BillingID;
    string DirectCost;
    string BusinessUnit;
    string StatusID;

    string AccCode;

    foreach (GridDataItem itm in rgData.Items)
    {
        BillingID = itm["BillingID"].Text;
        DirectCost = itm["DCIDescription"].Text;
        BusinessUnit = itm["BUName"].Text;
        StatusID = itm["BUfoStatusID"].Text;

        Label lb = (Label)itm.FindControl("Label1");
        string InvLineNo = lb.Text;

        try
        {
            SDM.Invoice.Insert(lblInvId.Text, _SPID, InvLineNo, lblInvNo, InvType, BillingID, BusinessUnit, DirectCost, StatusID, Status, DateTime.Now, AccCode);
        }
        catch (Exception ex)
        {

        }
    }
}

我重建了我的项目次数,当我运行我的网页" Default.aspx.cs"时,总是它给我以下错误:

最佳重载方法匹配' SDM_Invoice.Insert(字符串,字符串,字符串,字符串,字符串,字符串,字符串,字符串,字符串,字符串,System.DateTime,字符串)'有一些无效的论点

我搜索了许多与我的问题相关的文章,但无法找到解决问题的方法。

这是我第一次使用TableAdapter。
请帮我解决我的代码有什么问题?我错过了什么。
提前致谢。

1 个答案:

答案 0 :(得分:0)

除了倒数第二个以外的所有参数都需要是字符串,但是你似乎传递了一些非字符串值,例如lblInvNo,它似乎是一个用户界面元素。

检查除了倒数第二个之外的每个参数的类型,并确保它们都是字符串。