当前位置:编程学习 > C#/ASP.NET >>

DataList 布局问题,也许我HTML太差搞不定.下午结帐.谢谢

已知我有40种产品,我想排成4列10行.HTML太差,DataList生成的表格我都看晕了


数据表结构如下
产品名   金额    数量
CP1       10       5
CP2       16       5
CP3       14       3
CP4       17       2
CP5       15       5
.......

我要生成的表格如下,我知道RepeatDirection="Horizontal"RepeatColumns="4",但是表头并不好加上去,生成的表格也很难看,也许我HTML太差的原因吧. 
_________________________________________________________
产品名 |  金额  |  数量 |  产品名 |  金额 |  数量| ...... <---四列产品名
-------|--------|-------|---------|-------|------|-------
CP1    |   10   |    5  |  CP11   |  80   |  9   |........
CP2    |   16   |    5  |  CP12   |   16  |  5   |........
CP3    |   14   |    3  |  CP12   |   14  |  3   |........
..........................

--------------------编程问答-------------------- 用Html 后台生成 等下 我给你写一个。 --------------------编程问答-------------------- 什么DataList、RepeatColumns呀?一点也不像DataList,你怎么会硬往那个上面套呢。DataList是画矩阵而不是画表的,画表使用 GridView/DataGrid。 --------------------编程问答-------------------- 前台
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td>产品名</td>
    <td>金额</td>
    <td>数量</td>
    <td>产品名</td>
    <td>金额</td>
    <td>数量</td>
    <td>产品名</td>
    <td>金额</td>
    <td>数量</td>
    <td>产品名</td>
    <td>金额</td>
    <td>数量</td>
  </tr>
  <%= tb%>
</table>



后面
   string tb = "";
   ...

    protected void Page_Load(object sender, EventArgs e)
    {
        if(!IsPostBack)
        {
             getTb();
        }
    }

    private void getTb()
    {
        DataView dvTb=new DataView();
        int j = 0;

        for (int i = 0; i < dvTb.Table.Rows.Count; i++)
        {
            if (j == 5)
                j = 0;
            if (j == 0)
                tb += "<tr><td>" + dvTb.Table.Rows[i]["产品名"].ToString().Trim() + "</td>";
            else
                tb += "<td>" + dvTb.Table.Rows[i]["产品名"].ToString().Trim() + "</td>";
            tb += "<td>" + dvTb.Table.Rows[i]["金额"].ToString().Trim() + "</td>";
            if (j == 4)
                tb += "<td>" + dvTb.Table.Rows[i]["数量"].ToString().Trim() + "</td></tr>";
            else
                tb += "<td>" + dvTb.Table.Rows[i]["数量"].ToString().Trim() + "</td>";
            j++;
        }
        if(dvTb.Table.Rows.Count % 4=1)
        {
            tb += "<td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>";
        }
        else if (dvTb.Table.Rows.Count % 4 = 2)
        {
            tb += "<td></td><td></td><td></td><td></td><td></td><td></td></tr>";
        }
        else if (dvTb.Table.Rows.Count % 4 = 3)
        {
            tb += "<td></td><td></td><td></td></tr>";
        }

    } --------------------编程问答-------------------- 哈。。帮顶! --------------------编程问答-------------------- TO:sp1234 
GridView/DataGrid根本达不到我的要求,我现在准备在后台建一个四列的datatable,这样程序会比较慢 你有什么好办法吗?


TO:Iceguy(Snow) 
这样看起来感觉不爽啊.不过还是要谢谢你.

--------------------编程问答-------------------- 是代码看起来不爽吧?
其实这样好处就是,你可以任意设置Html代码的样式 在生成过程中添加就行了 
其实很方便设置每个单元格的样式之类的
用控件反而很多地方要受到限制。 --------------------编程问答-------------------- 当你发现asp.net根本不能达到要求的时候,你是否改为使用html?

你的逻辑我见得太多了。我建议你多点信心和办法。 --------------------编程问答-------------------- 如果有人说c#或者java不爽,于是改为使用汇编,我们能因此认为他技术很好吗?有经验的人不能相信他。一个人不可能因为自己喜欢搞底层的东西而抬高自己,除非他确实证明自己精通得可以很快搞出一套,例如你可以证明你用几年时间可以搞出一套asp.net系统。 --------------------编程问答-------------------- 我现在准备在后台建一个四列的datatable,这样程序会比较慢 你有什么好办法吗?
——————————————————————————————————————————
怎么说明“比较慢”?

看不出你的到底以哪个已经可行的技术方案为依托,可能都还没有过成功地解决方案,连最慢的方案都自己没有自己实现过。 --------------------编程问答-------------------- 主  题:  DataList 布局问题,也许我HTML太差搞不定.下午结帐.谢谢  
作  者:  ccedxp2 ()        Blog  
等  级:    
信 誉 值:  100  
所属社区:  .NET技术 ASP.NET  
问题点数:  100  
回复次数:  9  
发表时间:  2007-3-31 10:39:38  
----------
now is 2006-4-3 15:17 --------------------编程问答-------------------- 顶一下.
其实是个很容易的问题. --------------------编程问答-------------------- 揭贴把 --------------------编程问答-------------------- 自己写HTML要容易的多,反正就是table循环呗 --------------------编程问答-------------------- 学习来了! --------------------编程问答-------------------- 学习 --------------------编程问答-------------------- 想多了吧,直接循环table
                   tr
                     td
自己设置下样式不就成了,
--------------------编程问答--------------------
<asp:Repeater ID="rp_01" runat="server">
        <HeaderTemplate>
            <table border="1" cellpadding="0" cellspacing="0">
                <tr>
                    <td>产品名</td>
                    <td>金额</td>
                    <td>数量</td>
                    <td>产品名</td>
                    <td>金额</td>
                    <td>产品名</td>
                </tr>
        </HeaderTemplate>
        <ItemTemplate>
            <tr>
                <td><%#Eval("Product") %></td>
                <td><%#Eval("Price") %></td>
                <td><%#Eval("Count") %></td>
        </ItemTemplate>
        <AlternatingItemTemplate>
                <td><%#Eval("Product") %></td>
                <td><%#Eval("Price") %></td>
                <td><%#Eval("Count") %></td>
            </tr>
        </AlternatingItemTemplate>
        <FooterTemplate>
            </table>
        </FooterTemplate>
    </asp:Repeater>

这个单数的时候可能难看点,用CSS控制下就好多了
只要了解Repeater,DataList,DataGrid/GridView是什么东西,都不难的,有空我写篇几个控件的另类用法 --------------------编程问答-------------------- 个人看法,aspx页面最好不用asp的写法,绑定应该比asp循环的写法要快,毕竟MS做了很多优化 --------------------编程问答-------------------- 前台直接绑定数据 --------------------编程问答-------------------- 用stringbuilder循环组合html,性能还可以,我也是新手程序员,我很同意sp1234说的,不管什么方法,先有个解决方案,去实现它,然后再看看有没有更好的方案去改进,比较2者的不同,慢慢就会有进步的。 --------------------编程问答-------------------- 还有,之前我听一个asp.net的老鸟跟我说,死抱着ms的asp.net服务器控件不放,可能会死的很惨。。。。 --------------------编程问答--------------------

.UP --------------------编程问答-------------------- 跨年贴!!!!!!!!11 --------------------编程问答-------------------- 自己在table里面写循环,万事大吉 --------------------编程问答-------------------- --------------------编程问答-------------------- 无论你用啥· 都得控制样式 使其美观 是不是
  比如用table 和datelist   都的控制这些繁琐的问题!·
    就看你目前用哪个方便了!~··
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,