【问题标题】:(variable name) is neither a DataColumn nor a DataRelation for table Table(变量名)既不是表 Table 的 DataColumn 也不是 DataRelation
【发布时间】:2014-04-15 09:26:54
【问题描述】:

这是我从数据库中获取数据的代码(我使用数据集):

public DataSet getJobVacancy(GetJobVacancyData data)
{
    try
    {
        string _SPName  = "dbo.SearchJob";
        SqlParameter[] sqlParam = new SqlParameter[3];
        sqlParam[0] = new SqlParameter("@Keyword", SqlDbType.VarChar, 25);

        if(data.Keyword == null || data.Keyword == "")
            sqlParam[0].Value = DBNull.Value;
        else
            sqlParam[0].Value = data.Keyword;

        sqlParam[0].Direction = ParameterDirection.Input;
        sqlParam[1] = new SqlParameter("@LocationID", SqlDbType.SmallInt);

        if(data.LocationID == null)
            sqlParam[1].Value = DBNull.Value;
        else
            sqlParam[1].Value = data.LocationID;

        sqlParam[1].Direction = ParameterDirection.Input;
        sqlParam[2] = new SqlParameter("@ExperienceYears", SqlDbType.TinyInt);

        if(data.ExperienceYears == null)
            sqlParam[2].Value = DBNull.Value;
        else
            sqlParam[2].Value = data.ExperienceYears;

        sqlParam[2].Direction = ParameterDirection.Input;

        return SqlHelper.ExecuteDataset(SystemConfiguration.AMDP2_ConnectionString,
                                        CommandType.StoredProcedure,
                                       _SPName,
                                       sqlParam);

    }
    catch (Exception ex)
    {
        throw ex;
    }
}

这是我的二传手:

public string JobVacancyID { get; set; }
public string PostingDate { get; set; }
public string ClosingDate { get; set; }
public string Position { get; set; }
public string Location { get; set; }
public string Keyword { get; set; }
public string LocationID { get; set; }
public string ExperienceYears { get; set; }

这是我Repeater的数据绑定:

protected void rptJob_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || 
        e.Item.ItemType == ListItemType.AlternatingItem)
    {
        DataRowView data = (DataRowView)e.Item.DataItem;

        Literal ltrDatePosted = (Literal)e.Item.FindControl("ltrDatePosted");
        Literal ltrClosingDate = (Literal)e.Item.FindControl("ltrClosingDate");
        LinkButton lbtnPosition = (LinkButton)e.Item.FindControl("lbtnPosition");
        Literal ltrLocation = (Literal)e.Item.FindControl("ltrLocation");
        Literal ltrExpYears = (Literal)e.Item.FindControl("ltrExpYears");
        Literal ltrJobVacancyID = (Literal)e.Item.FindControl("ltrJobVacancyID");

        ltrDatePosted.Text = data["PostingDate"].ToString();
        ltrClosingDate.Text = data["ClosingDate"].ToString();
        lbtnPosition.Text = data["Position"].ToString();
        ltrLocation.Text = data["LocationName"].ToString();
        ltrExpYears.Text = data["ExperienceYears"].ToString();
        ltrJobVacancyID.Text = data["JobVacancyID"].ToString(); //this is where the error occured
    }
}

这是我的 sql 查询/存储过程(我已经运行了这个查询并且 JobVacancyID 列在结果中):

BEGIN
SELECT JobVacancyID, PostingDate, ClosingDate, Position, b.LocationName, ExperienceYears FROM TRJobVacancy a
JOIN LTLocation b on a.LocationID = b.LocationID    
WHERE Position LIKE '%'+ COALESCE(@Keyword,Position) + '%' AND COALESCE(@LocationID, a.LocationID) = a.LocationID AND COALESCE(@ExperienceYears,ExperienceYears)  = ExperienceYears

我得到的错误是:“JobVacancyID 既不是表 Table 的 DataColumn 也不是 DataRelation

而令人困惑的事实是: 1. 只是data["JobVacancyID"]报错,其他都顺利。 2.我想我没有一个名为Table的表(错误说这个) 谢谢:D

【问题讨论】:

  • 从不throw ex;。摆脱那个 catch 块。
  • 同意。如果你只是要抛出异常,那么 try/catch 是不必要的。此外,在设置ltrJobVacancyID.Text 之前,请通过执行data.Table.Columns.Contains("JobVacancyID") 检查以确保该列存在。我想知道是否可能有一个错字。错误中的 [variable name] 实际上是什么意思?
  • 完成,但错误仍然存​​在......谢谢:D
  • @SPFFiredrake 变量名称是 JobVacancyID :D 当我尝试使用 data.Table.Columns.Contains("JobVacancyID") 它说“'System.Data.DataRowView' 不包含定义对于“表”并且没有扩展方法“表”接受“System.Data.DataRowView”类型的第一个参数(您是否缺少 using 指令或程序集引用?)”请注意,我使用的是 DataView: D

标签: asp.net sql


【解决方案1】:

SORRY ALL.....我只是错过了输入变量..花了大约 3 个小时才意识到它@_@

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,但除了设置类型之外,我还遗漏了几个数据字段值。主要在 GridTemplateColumn 列上。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-05
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 2013-12-20
      相关资源
      最近更新 更多