列''不属于表“,即使它存在于表和查询中

时间:2011-11-18 11:06:16

标签: asp.net sql ado.net

错误消息是:

  

抛出了类型'System.Web.HttpUnhandledException'的异常。   友情消息:System.ArgumentException:列'testfile'可以   不属于桌子。在System.Data.DataRow.GetDataColumn(String   columnName)at System.Data.DataRow.get_Item(String columnName)at   Registration_test.FillImage()in   c:\ inetpub \ wwwroot \ testWeb \ Events \ Registration.aspx.cs:第49行at   Registration_test.Page_PreInit(Object sender,EventArgs e)in   c:\ inetpub \ wwwroot \ testWeb \ test \ Registration.aspx.cs:第39行at   System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp,Object   o,对象t,EventArgs e)at   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender,   EventArgs e)在System.Web.UI.Page.OnPreInit(EventArgs e)at   System.Web.UI.Page.PerformPreInit()at   System.Web.UI.Page.ProcessRequestMain(布尔   includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)   目标站点:Boolean HandleError(System.Exception)源:System.Web   错误堆栈跟踪是:在System.Web.UI.Page.HandleError(例外e)   在System.Web.UI.Page.ProcessRequestMain(布尔值   includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)   在System.Web.UI.Page.ProcessRequest(布尔值   includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)   在System.Web.UI.Page.ProcessRequest()处   System.Web.UI.Page.ProcessRequest(HttpContext context)at   ASP.events_registration_aspx.ProcessRequest(HttpContext context)中   c:\ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \ Temporary ASP.NET   Files \ testWeb \ 761ce6e4 \ d915dd85 \ App_Web_posk8hm6.6.cs:第0行at   System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()   在System.Web.HttpApplication.ExecuteStep(IExecutionStep步骤,   布尔和放大器; completedSynchronously)

当我在IIS中托管网站时,我收到上述错误作为电子邮件,但是当我在本地或甚至在线检查代码时我不知道它。错误说即使查询返回,testfile列也不属于datable专栏。

任何人都可以帮助原因......

//////////////////////这是我的代码///////////////////// //////////////////////////////

public partial class Registration_Registration : System.Web.UI.Page
{
    protected void Page_PreInit(object sender, EventArgs e)
    {

       FillImage();
    }
    protected void FillImage()
    {

       string Query = "select t.header_image_file as  'HeaderImage',t.image,c.testfile from registrars c left join trade t on c.tradeid =  t.tradeid and c.mainitemid = t.mainitemid ";


       DataTable result = GetDataTable(Query);

       if (result != null && result .Rows.Count > 0)
       {
          if (result .Rows[0]["testfile"] != null)
          {
             this.Theme = result .Rows[0]["testfile"].ToString().Trim();
             this.MasterPageFile = result .Rows[0]["testfile"].ToString().ToLower().Trim() + ".master";
          }
       }
   }
}
protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
    }
 }}

1 个答案:

答案 0 :(得分:1)

好的,乍一看,我们发现错误与不在表格中的列有关。

要解决此问题,我建议您首先在管理工作室中运行查询,检查您尝试在ASP.Net页面中访问的列的名称。 如果列名都是正确的备份,则数据将丢弃并重新创建表和访问此表的存储过程,并希望这将解决问题。

在开发过程中不小心更新数据库中的列等,而不是将更改推送到生产数据库。

如果这不解决问题,如果您发布表结构,查询和访问查询的代码,您将能够获得更好的帮助,以便我们可以更有效地诊断问题。

更新: 这些是您在查询中选择的列

strt.header_image_file as  'HeaderImage',
t.image,
c.themefile  

然而,在您的代码中,您尝试访问名为testfile的列