2012-01-12 59 views
0

结合我有一个存储过程SP1这是返回结果集中继器与存储过程中Asp.Net

select column1 [Col(1)] from table1 

我在ASPX页面转发器会在这里:

<asp:Repeater ID="Repeater1" runat="server"> 
    <ItemTemplate> 
     <tr> 
     <td> 
      <%# Eval("Col(1)")%>          
     </td>         
     </tr> 
    </ItemTemplate>       
</asp:Repeater> 

但,致电<%# Eval("Col(1)") %>,我收到一个错误:

"DataBinding: 'System.String' does not allow indexed access"

原因很清楚th在Col(1)是痛苦。由于我无法更改存储过程,因此如何在asp.net中处理这种情况?

谢谢。

回答

0

试试这个。

<asp:Repeater ID="Repeater1" runat="server"> 
    <ItemTemplate> 
     <tr> 
     <td> 
      <%# DataBinder.Eval(Container.DataItem, "Column_Name") %> 
     </td> 
     </tr> 
    </ItemTemplate>       
</asp:Repeater> 

直接提到存储过程中使用的列名称。

评论

编辑后尝试的DataItem的这则

<%# eval("Column_Name") %> 
+0

我试着像你提到的<%#DataBinder.Eval的(的Container.DataItem, “上校(1)”)%>,但还是同样的问题。 – Zohaib 2012-01-12 04:26:40

+0

嗯......试试这个然后<%#eval(“Column Name”)%> – Neelam 2012-01-12 09:33:48

1

使用[]索引。第一项(列)的索引值为0等等。

<%# Eval("[0]") %> 

或者

<%# DataBinder.Eval(Container.DataItem, "[0]")%> 
+0

那么,有没有办法提到存储过程的返回列名? – Zohaib 2012-01-12 05:57:30

+0

@Zohaib - 发布的代码将完全按照您的需求。如果col(1)包含“某物”,则它会打印“某物”。 – adatapost 2012-01-12 06:00:12