数据绑定控件显示数据换行的几个实例

原创 2010年04月02日 08:07:00

不知不觉做web开发已经2年了,在这两年里我干的最多的活就是数据绑定。我个人比较喜欢用datagrid,我最开始接触的就是datagrid,然后是repeater,然后是datalist、gridview等。有些时候客户要求特定的格式显示数据,比如数据横向排开,一行显示几列等。这就是典型的控件应用变通,有些不让用任何控件的我就用代码在后台写,然后将形成的html发送给前台的html控件。

废话不多说,拿数据横向排开,一行显示2列来做个例子。

repeater:

<table cellpadding="0" border="0" cellspacing="0" width="100%" id="tblData" class="tblJhwc">
          <tr class="trHead">
              <td>单位</td>
              <td>计划</td>
              <td>完成</td>
              <td width="66">百分比</td>
              <td>单位</td>
              <td>计划</td>
              <td>完成</td>
              <td width="66">百分比</td>
            </tr>
            <tr>
      <asp:Repeater runat="server" ID="rptData" OnItemDataBound="rptData_ItemDataBound">
     <ItemTemplate>
         <td><%# Eval("dwmc") %></td>
         <td sm='计划|<%# Eval("jhqk").ToString().Trim()%>' class="tipTd"><%# Eval("jh") %></td>
         <td sm='已完成|<%# Eval("wcqk").ToString().Trim()%>' class="tipTd"><%# Eval("wc")%></td>
         <td><%# Eval("wcbl")%></td>
     </ItemTemplate>
     </asp:Repeater>
     </tr>
        </table>

 

后台:

 //分两列显示
        protected void rptData_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
        {
            if ((e.Item.ItemIndex+1) % 2 == 0)
            {
                e.Item.Controls.Add(new LiteralControl("</tr><tr>"));
            }
        }

 

datalist就比较简单点了

<asp:DataList ID="DList_Nbrj" RepeatDirection="Horizontal" RepeatColumns="2" ShowFooter="false" ShowHeader="false" BorderWidth="0" runat="server">
       <ItemTemplate>
           <a title='<%#DataBinder.Eval(Container.DataItem, "SoftName")%>' href="javascript:void(0)" onclick="openNbrjLink('<%# DataBinder.Eval(Container.DataItem, "SoftLink") %>',this)" >
       <%# DataBinder.Eval(Container.DataItem, "SoftImgPath").ToString() == "" ? DataBinder.Eval(Container.DataItem, "SoftName") : DataBinder.Eval(Container.DataItem, "SoftImg")%></a>
          </ItemTemplate>
     </asp:DataList>

 

属性RepeatDirection是重复方向,RepeatColumns是显示的列数。

 

手写的html代码

前台我用 <asp:Literal runat="server" ID="litTable"></asp:Literal>显示html内容

后台:

int cols = 2;//一行显示的单位个数
                string tableHtml = "<table cellspacing='0' cellpadding='2' border='0' ><tr>";
                string imgHtml = "";
                DataRow[] drData = dtData.Select("sjdwdm= '" + sjdwdm + "'");
                //Response.Write("bbbbb");
                for (int i = 0; i < drData.Length; i++)
                {
                    if (drData[i]["sl"].ToString() == "0")//未上报
                    {
                        //tips = "title='未上报'";
                        imgHtml = "<img src='../images/redCross.gif'>";//红X
                    }
                    else//上报了(dt.Rows[i]["sl"].ToString()不会是空)
                    {
                        if (drData[i]["cb"].ToString() == "1")//迟报
                        {
                            if (drData[i]["cfsb"].ToString() == "1")//重复上报
                            {
                                //tips = "title='迟报且重复上报'";
                                imgHtml = "<img src='../images/dblgreenFlag.gif'>";//绿绿旗
                            }
                            else//没有重复上报
                            {
                                //tips = "title='迟报'";
                                imgHtml = "<img src='../images/greenFlag.gif'>";//绿旗
                            }
                        }
                        else//正常上报
                        {
                            if (drData[i]["cfsb"].ToString() == "1")//重复上报
                            {
                                //tips = "title='重复上报'";
                                imgHtml = "<img src='../images/dblredFlag.gif'>";//红红旗
                            }
                            else
                            {
                                //tips = "title='正常上报'";
                                imgHtml = "<img src='../images/redFlag.gif'>";//红旗
                            }

                        }
                    }
                    tableHtml += "<td width='60' align='left' onmouseover='javascript:this.className=/"tdOver/"' onmouseout='javascript:this.className=/"tdOut/"' class='tdOut' onclick='setLink(/"" + drData[i]["dwdm"] + "/",/"" + drData[i]["dwscgs"] + "/",/"" + tablename + "/",/"" + rq.Replace("-", "") + "/")' title='每天上报时间:" + drData[i]["mtsbsj"] + "'>" + drData[i]["dwscgs"] + "</td><td align='left' width='45'>" + imgHtml + "</td>";
                    if ((i + 1) % cols == 0)
                        tableHtml += "</tr><tr>";
                }
                if (drData.Length % cols > 0)//补齐最后一行的单元格
                {
                    int len = cols - (drData.Length % cols);
                    for (int j = 0; j < len; j++)
                    {
                        tableHtml += "<td width='60'>&nbsp;</td><td width='45'>&nbsp;</td>";
                    }
                }
                tableHtml += "</tr></table>";

 

手写的代码从执行效率上说应该比控件快点,毕竟不用控件先解析出html代码。先总结这些,以后再修改。

DataGridView控件Combox列数据绑定

  • 2017年10月17日 08:41
  • 57KB
  • 下载

DataGridView数据绑定控件---------按钮添加和事件触发总结

DataGridView数据绑定控件---------按钮添加和事件触发总结
  • aganar
  • aganar
  • 2011年04月01日 12:57
  • 10802

Repeater控件实现数据绑定,并实现分页效果

前台显示代码 姓名

数据绑定内容控件示例

  • 2013年01月07日 19:12
  • 981KB
  • 下载

Win8控件应用及数据绑定源码20130829

  • 2013年08月31日 08:42
  • 6.73MB
  • 下载

webForm数据绑定控件的嵌套

有时候不得不在数据绑定控件中嵌套数据绑定控件来完成要求的数据显示效果 .公司在做一个商城的项目,有个页面的要求如图所示.     我很使劲儿的想了想,貌似只能嵌套数据控件了.外部的控件(简称为Rep...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据绑定控件显示数据换行的几个实例
举报原因:
原因补充:

(最多只允许输入30个字)