datagrid、dataview每行只能显示数据表中一行数据,但是有时候如果想在table的一行显示数据表中的两行数据(如下所示),应该怎么办呢?
|
币种 |
中间价 |
币种 |
中间价 |
|
港币 |
1.0000 |
日元 |
1.0000 |
|
英镑 |
7.0000 |
|
|
|
发布时间:2008-3-26 |
第一种方法是:使用repeater,其中itemtemplate使用td显示一条记录,当有两个td的时候就输出tr,从而换行,这种办法是比较直观的方法,但是可控性差,也很难实现界面与代码分离
第二种方法是阿武提示我的,就是直接在datatable中把datarow的结构改变,使其变成双排,比如本来每个datarow是有两个列,分别是a和b,那么为每个row再添加两列a1、b1,这样row就变成了a b a1 b1的格式了,做完这一步之后还要使数据同步,把原来是第2行的数据变成现在第一行数据的后半部分,依次类推,下面是实现代码:
protected void funcFormatDs(DataSet ds)
{
DataTable tb = ds.Tables[0];
tb.Columns.Add(new DataColumn("fdFoexCurrencyName2"));
tb.Columns.Add(new DataColumn("fdFoexMediatePrice2"));
for (int i = 0; i < tb.Rows.Count;i++)
{
if (i < tb.Rows.Count-1)
{
tb.Rows[i]["fdFoexCurrencyName2"] = tb.Rows[i + 1]["fdFoexCurrencyName"];
tb.Rows[i]["fdFoexMediatePrice2"] = tb.Rows[i + 1]["fdFoexMediatePrice"];
tb.Rows.RemoveAt(i + 1);
}
}
......