webservice返回的是string[],用一个数组装住,可以把数据全部读取出来,平常我们在Repeater循环会写<%#Eval("类名字")%>我应该怎么把数组里数据正确的循环出来?谢谢!
解决方案 »
- 关于三层架构设计问题,数据库改动较频繁!
- 返回页面问题
- 实在是搞不定了,一个关于Sessionr 的问题,同是一个语句Session("ID") = t1,一个页面能调用,另一个页面为何不能调用ID
- 关于调用控件在页面中执行的顺序问题
- FCKeditor XML request error: Forbidden (403)
- 访问页面的时候,提示找不到表(.net操作sql 20000问题)
- IE Web Controls安装问题!请帮忙!(在线等待)
- javascript控制treeview的checkbox?
- VS7中没有自动提示了
- 缓存的奇怪问题
- 正则表达式提取内容
- ISAPI_Rewrite做Url转发问题求教一个简单的规则
?
<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();
------------------你不是返回string[]数组么?
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 多了几列而已
1
张三
300
2
王五
200
------------------------------------------这个说法是错误的Repeater1.DataSource = lines; 就可以了
慕白兄的回答是正确的<%#Container.DataItem%>你最好 在把返回值的内容贴一下
Sandy945兄;IE报错
Repeater1 使用的是无效数据源。有效数据源必须实现 IListSource 或 IEnumerable。
public string[] GetLineAll(){ 。
//省略底层代码 就是查询一张表 return LineManager.GetLineAll();
}
<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();
这句话是不会对齐的。你在邦定前先用一个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。
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>
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++;
}
}