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

原创 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代码。先总结这些,以后再修改。

C#中对控件的非代码数据绑定操作(WEB FORM)

用SQLSERVER的例子数据库Northwind进行说明.效果为:程序根据用户选中的产品名来更新GridView产品信息列表中的内容在WEB FORM上加1个DropDownList,1个GridV...
  • ltolll
  • ltolll
  • 2006年10月23日 10:42
  • 1250

ComboBox控件的数据绑定

ComboBox控件是一个下拉组合控件,该控件可以让用户输入或下拉选择内容。在使用的时候经常只是绑定数据表中的其中一列或把其中一列的值添加到Items中,如:name 。但在查询或使用的时候有可能需...
  • tdtxflsh
  • tdtxflsh
  • 2011年03月09日 13:14
  • 23814

DEV treeList 绑定数据

treeList.KeyFieldName = "OID";//主键名称 treeList.ParentFieldName = "ParentOID";//父级ID treeList.DataSour...
  • GoodChangYong
  • GoodChangYong
  • 2017年04月02日 13:48
  • 800

2.vue.js实例:双向数据绑定实例

双向数据绑定                                 双向数据绑定                                         {{ ...
  • u012767607
  • u012767607
  • 2017年03月24日 16:47
  • 472

chart&nbsp;控件的各种数据绑定(…

原文地址:控件的各种数据绑定(后台代码中,动态添加数据)">chart 控件的各种数据绑定(后台代码中,动态添加数据)作者:官林辉一.数据源      说到绘制图表,可能很多人的第一反应除了是图表...
  • fuyoufang1
  • fuyoufang1
  • 2014年05月06日 17:35
  • 1114

如何将数据库中的字段数据绑定显示在Label或TextBox控件中

***********实例分析,模仿可写 【方法一】   SqlDataReader myReader=myCmd.ExecuteReader(); myReader.Read(); Lab...
  • u010276845
  • u010276845
  • 2013年10月17日 11:05
  • 1846

WPF 简单数据绑定实例

创建一个WPF窗体,加一个TextBox和Button控件,控件button用于控制数据更改,TextBox用于显示更改后的数据,这项数据对于WinForm来说是很容易实现的,用控件点击事件对另一个控...
  • loveyou388i
  • loveyou388i
  • 2017年04月14日 11:05
  • 624

C#图解—Windows Forms数据绑定技术

转自:http://www.cnblogs.com/zhouhb/archive/2010/12/19/1910621.html     BindingSource组件是.Net在Windows...
  • hemeinvyiqiluoben
  • hemeinvyiqiluoben
  • 2014年12月02日 16:29
  • 917

使用数据绑定控件显示数据

创建带有数据的互动网页很简单,只需通过拖拉,设置属性并储存页面即可,并不需要编程,不过Visual InterDev提供了一个完整的对象模型,可让你调整应用程序,进行用户确认并控制Web应用程序,也支...
  • znzccnl
  • znzccnl
  • 2010年04月26日 10:21
  • 80

ASP.Net数据绑定控件小结

数据绑定作为ASP.Net中较为重要的一个知识点,其中涉及到了三个重要的数据绑定控件,Repeater DataList 和GridView(DataGrid)。 Repeater控件:   特点: ...
  • zllaptx4869
  • zllaptx4869
  • 2013年10月09日 21:59
  • 1726
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据绑定控件显示数据换行的几个实例
举报原因:
原因补充:

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