webservice返回的是string[],用一个数组装住,可以把数据全部读取出来,平常我们在Repeater循环会写<%#Eval("类名字")%>我应该怎么把数组里数据正确的循环出来?谢谢!

解决方案 »

  1.   

    直接写<%#Container.DataItem%>
      

  2.   

    这个数组里有 编号 名称 单价全部都写<%#Container.DataItem%>
      

  3.   

    <asp:Repeater ID="Repeater1" runat="server">
            <HeaderTemplate>
            <table>
            <tr>
                <td style="width: 194px">
                    编号</td>
                <td style="width: 187px">
                    客户名称</td>
                <td style="width: 251px">
                    订单金额(元)</td>
            </tr>
            </HeaderTemplate>
            <ItemTemplate>
            <tr>
                <td style="width: 194px"><%#Container.DataItem %>
                </td>
                <td style="width: 187px"><%#Container.DataItem %>
                </td>
                <td style="width: 251px"><%#Container.DataItem %>
                </td>
            </ItemTemplate>
            <FooterTemplate>
            </tr>
              </table>
            </FooterTemplate>
            </asp:Repeater>
    。cs//接收webservice接口
    MyLines.OrdersList lines = new MyLines.OrdersList(); Repeater1.DataSource = lines as IList; Repeater1.DataBind();
      

  4.   

    lines as IList;
    ------------------你不是返回string[]数组么?
      

  5.   

    可以将你的数据组装成一个DataTable,然后按照常规的绑定数据方法写就可以了给你个简单的例子:
    string[] aArray = {"a","b","c","d","e"};
    DataTable dt = new DataTable();
    dt.Columns.Add("ABC",Type.GetType("System.String"));
    foreach(string str in aArray)
    {
         dt.Rows.Add(str);
    }
    Repeater1.DataSource = dt;
    Repeater1.DataBind();在页面写<%#Eval("ABC")%> 就可以绑定数据了更复杂的也就是DataTable 多了几列而已
      

  6.   

    不好意思,也许是我表达不清楚,传过来的确实是数组,Repeater1.DataSource 接收的值必须是ILIST;所以要转型,谢谢大家帮忙!谢谢 zhangyumei 你的方法可以,但是不对齐。在IE看到的是这样:编号   客户名称   订单金额(元) 
    1  
    张三  
    300  
    2  
    王五  
    200  
      

  7.   

    Repeater1.DataSource 接收的值必须是ILIST;
    ------------------------------------------这个说法是错误的Repeater1.DataSource = lines; 就可以了
    慕白兄的回答是正确的<%#Container.DataItem%>你最好 在把返回值的内容贴一下
      

  8.   

    如果不转
     
    Sandy945兄;IE报错
    Repeater1 使用的是无效数据源。有效数据源必须实现 IListSource 或 IEnumerable。
      

  9.   

    webservice那边是这样写[WebMethod]
    public string[] GetLineAll(){   。
      //省略底层代码 就是查询一张表  return LineManager.GetLineAll();
    }
      

  10.   

    Repeater1.DataSource = lines as IEnumerable;
      

  11.   

    解决办法有两种一是根据返回的 string[] 重新 组合一下 Repeater 需要的数据源二是 在Repeater 的html 代码部分 处理一下
      

  12.   

    用了 gridview也是乱的。一定要从webservice调用,因为这是要求
      

  13.   


    <asp:Repeater ID="rp" runat="server">
            <HeaderTemplate>
                <table>
                    <tr>
                        <td>
                            编号
                        </td>
                        <td>
                            客户名称
                        </td>
                        <td>
                            订单金额(元)
                        </td>
                    </tr>
            </HeaderTemplate>
            <ItemTemplate>
                <%#(Container.ItemIndex +1) % 3==1?"<tr>":"" %>
                <td>
                    <%#Container.DataItem %>
                </td>
                <%#(Container.ItemIndex +1) % 3==0?"</tr>":"" %>
            </ItemTemplate>
            <FooterTemplate>
                </table>
            </FooterTemplate>
        </asp:Repeater>
    rp.DataSource = new string[] { "1", "张三", "300", "2", "王五", "200" };
                rp.DataBind();
      

  14.   

    Repeater1.DataSource = lines as IEnumerable;
    这句话是不会对齐的。你在邦定前先用一个dataset以表记录的格式循环接收。
    var tt = ....;//取得数组。
    for(int i = 0,j = 1 ; i < tt.count() ; i++,j++)
    {
       if(j == 3)
       {  
          j=1;
          dataset.add({tt[i-2],tt[i-1],tt[i]});//这里只是形式,具体怎么实现没做过。
       }
    }
    再绑定这个dataset。
      

  15.   

    Sandy945兄可以加QQ详聊吗?764537152
      

  16.   

    继承IEnumerable接口的类就可以了。
      

  17.   

    demo 都给你写了,你还需要什么?
      

  18.   

    protected int    i=1;   
    protected void    Repeater1_ItemDataBound(object    src,RepeaterItemEventArgs    e)
    {   
       if(i%3==0){   
          e.Item.Controls.Add(new    LiteralControl("</tr><tr>"));   
       }   
       i++;   
     }
    <asp:Repeater ID="rp" runat="server">
            <HeaderTemplate>
                <table>
                    <tr>
                        <td>
                            编号
                        </td>
                        <td>
                            客户名称
                        </td>
                        <td>
                            订单金额(元)
                        </td>
                    </tr>
            </HeaderTemplate>
            <ItemTemplate>
                           <td>
                    <%#Container.DataItem %>
                </td>
                        </ItemTemplate>
            <FooterTemplate>
                </table>
            </FooterTemplate>
        </asp:Repeater>
      

  19.   

    少些个限制。
    protected int    i=1;   
    protected void    Repeater1_ItemDataBound(object    src,RepeaterItemEventArgs    e)
    {if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
    {
    if (i==1)
    e.Item.Controls.Add(new    LiteralControl("<tr>"));
    if(i%3==0){   
    e.Item.Controls.Add(new    LiteralControl("</tr><tr>"));   
       }   
       i++;  

     }