本帖最后由 NeilMao 于 2010-05-01 02:04:10 编辑

解决方案 »

  1.   

    你从数据库查询出id这个字段吗?
    这个错误是表示,在datatable里面没有id这个列
      

  2.   

    DataBinder.Eval(Container.DataItem,"id")
    检查数据源是否包含此字段
      

  3.   

    我查了数据源 里面确定有id这个列 如果我把查询语句改成
    string QueryStr = "SELECT id FROM News WHERE Class=" + ViewState["ClassID"].ToString() + " ORDER BY id DESC";
    那就报找不到Title字段 id不报了
      

  4.   


    string QueryStr = "SELECT id,title FROM News WHERE Class=" + ViewState["ClassID"].ToString() + " ORDER BY id DESC";
    //你这样写,把所有要用到的字段都一一查询出来
      

  5.   

    select 语句 ;
    SELECT id,title FROM News WHERE Class=" + ViewState["ClassID"].ToString() + " ORDER BY id DESC
    拼接 会出现漏洞 。
    使用 参数@class比较好
      

  6.   

    SELECT id,title FROM News WHERE Class=" + ViewState["ClassID"].ToString() + " ORDER BY id DESC";
    这句改下:
    string str=ViewState["ClassID"].ToString();
    SELECT id,title FROM News WHERE Class=" + ViewState["ClassID"].ToString() + " ORDER BY id DESC";
    可能执行的顺序有点关系,你要是在这里设个断点,调试下应该能看出来
      

  7.   

    是一个数据源啊
                    Repeater1.DataSource = TempTB;
                    //Repeater1.DataSource = NewsTable;
    这两个我是分别调试的 问题都一样
      

  8.   

    sql语句应该没有问题 因为我下断点发现NewsTable.Rows.Count!=0 说明能检索到数据 并且我看datatable里的column里的list的值也非空 能显示出我查询的字段
      

  9.   

    SELECT id,title FROM News WHERE Class=" + ViewState["ClassID"].ToString() + " ORDER BY id DESC";
    这句改下:
    string str=ViewState["ClassID"].ToString();
    SELECT id,title FROM News WHERE Class=" + str + " ORDER BY id DESC";
    可能执行的顺序有点关系 这样试下看
     
      

  10.   

    还是不行 我改成这样 string QueryStr = "SELECT id,Title FROM News WHERE Class=10 ORDER BY id DESC"; 直接指定ClassID也不行 但是调试发现都能检索到数据 说明SQL语句没有问题 也能返回对应的字段 但是绑定的时候就是出错 郁闷 PS:数据库里我把id设为主键 
      

  11.   

    现在用DataList绑定 没有问题 代码也没改 不知道怎么回事
    我的空间模板是:
                    <ItemTemplate>
                     <tr>
                    <div align="left">
                        <td width="4%" height="23"><IMG height="6" src="image/001.jpg" width="6"></td>
        <td width="80%"><a href="ShowNews.aspx?id=<%#DataBinder.Eval(Container.DataItem,"id")%>" target="_blank"><%#DataBinder.Eval(Container.DataItem,"Title")%></a></td>
        </div>
    <div align="right">
        <td width="16%"><%#DataBinder.Eval(Container.DataItem,"Title") %></td>
        </div>
           </tr>
    <tr>
    <td align="center" colSpan="3"><IMG height="7" src="image/002.jpg" width="100%"></td>
    </tr>
                    </ItemTemplate>
    同样的模板 用repeater就出现问题 用Datalist没有问题
      

  12.   

    <a href="ShowNews.aspx?id=<%#DataBinder.Eval(Container.DataItem,"id")%>" target="_blank">
    这句换下方式
    [code=HTML
    <a href='ShowNews.aspx?id=<%#DataBinder.Eval(Container.DataItem,"id")%>' target="_blank">
    ][/code]
      

  13.   

    <a href="ShowNews.aspx?id=<%#DataBinder.Eval(Container.DataItem,"id")%>" target="_blank">
    这句换下方式<a href='ShowNews.aspx?id=<%#DataBinder.Eval(Container.DataItem,"id")%>' target="_blank">
    ]
      

  14.   

    是,要看数据库是否有这个字段,同时select的列中是否包含这个字段
      

  15.   

    果然是这样 改成你说的就可以用了 但是我用双引号在Datalist可以用 不解