<asp:Repeater id="Repeater1" runat="server">
<HeaderTemplate>
<table>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td rowspan="4"></td>
<td>
<tr>
<%# DataBinder.Eval(Container.DataItem,ds.Tables[0].Columns[1].ColumnName) %></tr>
<tr>
<%#DataBinder.Eval(Container.DataItem,"SacrificeName")%></tr>
<tr>
<%#DataBinder.Eval(Container.DataItem,"SacrificeTextUrl ")%></tr>
<tr>
<%#DataBinder.Eval(Container.DataItem,"PhotoUrl")%></tr>
</td>
</tr>

</ItemTemplate> 
<FooterTemplate></table>
</FooterTemplate> </asp:Repeater>
以上是部分源代码
以下是异常信息:
DataBinder.Eval:“System.Char”不包含名称为 MemorialId 的属性。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Web.HttpException: DataBinder.Eval:“System.Char”不包含名称为 MemorialId 的属性。源错误: 
行 42:  <td>
行 43:  <tr>
行 44:  <%# DataBinder.Eval(Container.DataItem,ds.Tables[0].Columns[1].ColumnName) %></tr>
行 45:  <tr>
行 46:  <%#DataBinder.Eval(Container.DataItem,"SacrificeName")%></tr>
 
-----------------
出错在行44:原来DataBinder.Eval的第二个参数我写的是字段名,出错后来从直接从ds中获得列名还是出同样的错误,请教高手错在哪儿,怎么解决?

解决方案 »

  1.   

    <%# DataBinder.Eval(Container.DataItem,ds.Tables[0].Columns[1].ColumnName) %>
    第一次见这样直接绑定的!
    学习ing....
      

  2.   

    数据源是没有错误的,因为现在我的字段名是直接从数据源获得的ds.Tables[0].Columns[1].ColumnName,值是" MemorialId "
      

  3.   

    <%# DataBinder.Eval(Container.DataItem,ds.Tables[0].Columns[1].ColumnName) %>
    ds.Tables[0].Columns[1].ColumnName) 用列名直接替换
    <%# DataBinder.Eval(Container.DataItem,"MemorialId ") %>
      

  4.   

    在databind()时中断一下,在监视里看看ColumnName能不能正确读取
      

  5.   

    还有楼主的repeater里面的html代码似乎有问题,怎么td里面嵌套n个tr啊
      

  6.   

    你确定这个列名MemorialId 没写错吗?
      

  7.   

    检查下html吧,html不对也有可能出现那种问题
      

  8.   

    不行就写方法绑定
    后台public string GetString(string或是int xxx)
    {
       string str="";
       str=你想得到的数据值,根据xxx参数得到;
       return str;
    }
    前台页面
    <tr>
    <%# DataBinder.Eval(Container.DataItem,GetString(字段)) %></tr>
    <tr>
      

  9.   

    :“System.Char”不包含名称为 MemorialId 的属性。 你的记录集里可能没有这个字段..