手机web开发Repeater四层嵌套

最近有朋友想让我给他做个手机上页面,页面功能是显示省--市--区--门店信息,这种层级关系的数据,首先来看看效果;

我想现在的手机都是智能机了对于普通的asp.net页面开发应该没什么两样,不过最终开发下来还是有点区别:

1:首先是Safari浏览器对js的支持,和IE下面的区别。

2:页面数据的显示以及缩放等效果。

介于以上要求,我考虑使用Repeater多层嵌套来实现,下面是页面代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Tree.aspx.cs" Inherits="Tree" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>无标题页</title>
    <style>
<!--

.datalist{
width:100%;
    /*border:1px dashed   #0058a3;     表格边框 */
    border-width :0px 0px 0px 1px;
    border-style : dotted;
    border-color : #0058a3;
    font-family:Arial;
    border-collapse:collapse;    /* 边框重叠 */
    background-color:#c7e5ff;    /* 表格背景色 eaf5ff   0058a3*/
    font-size:14px;
}

.datalistChild{
    width:100%;
    padding:0px; margin:0px; width:100%;
    /*border:1px dashed   #0058a3;     表格边框 */
    border-width :0px 0px 0px 1px;
    border-style : dotted;
    border-color : #0058a3;
}

.datalist th{
    border:1px dashed #0058a3;    /* 行名称边框 */
    background-color:#4bacff;    /* 行名称背景色 */
    color:#FFFFFF;                /* 行名称颜色 */
    font-weight:bold;
    padding:0px;
    text-align:center;
}
.datalist td{
    border-width :1px 1px 0px 0px;
    border-style : dotted ;
    border-color : #0058a3;    /* 单元格边框 */
    border-left-style:dashed;
    text-align:left ;
    padding:0px;
    line-height:26px;
    /*
    padding-top:0px; padding-bottom:0px;
    padding-left:0px; padding-right:0px;
    */
}
.datalist tr.altrow{
    background-color:#c7e5ff;    /* 隔行变色 */
}
-->
</style>
    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />

    <script>
//document.body.style.zoom = window.screen.width / 400;//此句只能放到body内,不然无法找到对象

function $(obj)
{
return document.getElementById(obj);
}

function showHid(id,self)
{
    var obj=$(id);
    var disp=obj.style.display;
    var trs = document.getElementsByTagName("tr");

    for(i=0;i<trs.length;i++)
    {
        if(trs[i].style.display==""&&trs[i].getAttribute("level")==obj.getAttribute("level"))
        trs[i].style.display="none";
    }
    obj.style.display=disp;

    //alert(self.childNodes[0].innerHTML);
    if(obj.style.display=="none")
    {
        obj.style.display="";
        self.childNodes[0].innerText="-";
    }
    else
    {
        obj.style.display="none";
        self.childNodes[0].innerText="+";
    }

}

</script>

</head>
<body>
    <form id="form1" runat="server">
        <div>
            <table class="datalist">
                <tr>
                    <th scope="col">
                    </th>
                    <th scope="col">
                        省份</th>
                </tr>
                <asp:Repeater ID="rp_sheng" runat="server" OnItemDataBound="rp_sheng_ItemDataBound">
                    <ItemTemplate>

                    <tr onclick="showHid(‘sheng<%# DataBinder.Eval(Container.DataItem, "smc")%>‘,this)">
                        <td style="width: 12px; text-align: center;">+</td>
                        <td><%# DataBinder.Eval(Container.DataItem, "smc")%></td>
                    </tr>
                    <tr id="sheng<%# DataBinder.Eval(Container.DataItem, "smc")%>" style="display: none;" level=1>
                        <td>
                        </td>
                        <td>
                        <table class="datalist"  style="padding:0px; margin:0px; width:100%; border-width:0px 0px 0px 0px;">
                        <asp:Repeater ID=rp_shi runat=server  OnItemDataBound="rp_shi_ItemDataBound">
                            <ItemTemplate>
                            <tr  class="altrow" style="border-left-width:0px;" onclick=showHid(‘shi<%# DataBinder.Eval(Container.DataItem, "csmc")%>‘,this)>
                                <td style="width:12px;text-align:center;">+</td>
                                <td><%# DataBinder.Eval(Container.DataItem, "csmc")%></td>
                            </tr>
                            <tr id="shi<%# DataBinder.Eval(Container.DataItem, "csmc")%>" style="display:none;" level=2>
                                <td></td>
                                <td style="padding-left:0px;">
                                    <table class="datalist"  style="padding:0px; margin:0px; width:100%; border-width:0px 0px 0px 0px;">
                                    <asp:Repeater ID=rp_qu runat=server OnItemDataBound="rp_qu_ItemDataBound">
                                        <ItemTemplate>
                                        <tr  class="altrow" style="border-left-width:0px;" onclick=showHid(‘qu<%# Convert.ToString( DataBinder.Eval(Container.DataItem, "qmc")).Trim() %>‘,this)>
                                            <td style="width:12px;text-align:center;">+</td>
                                            <td><%# Convert.ToString(DataBinder.Eval(Container.DataItem, "qmc")).Trim() %></td>
                                        </tr>
                                        <tr id="qu<%# Convert.ToString(DataBinder.Eval(Container.DataItem, "qmc")).Trim() %>" style="display:none;" level=3>
                                            <td></td>
                                            <td style="padding-left:0px;">
                                                <table class="datalist"  style="padding:0px; margin:0px; width:100%; border-width:0px 0px 0px 0px;">
                                                <asp:Repeater ID=rp_dian runat=server>
                                                    <ItemTemplate>
                                                    <tr  class="altrow" style="border-left-width:0px;">
                                                        <td width=70px><%# DataBinder.Eval(Container.DataItem, "mdmc")%></td>
                                                        <td style="border-right-width:0px;">
                                                        <%# DataBinder.Eval(Container.DataItem, "xxdz")%><br />
                                                        <%# DataBinder.Eval(Container.DataItem, "mdbh")%>
                                                        </td>
                                                    </tr>
                                                </ItemTemplate>
                                                </asp:Repeater>
                                                </table>
                                            </td>
                                         </tr>
                                    </ItemTemplate>
                                    </asp:Repeater>
                                    </table>
                                </td>
                             </tr>
                        </ItemTemplate>
                        </asp:Repeater>
                        </table>
                        </td>
                    </tr>
                    </ItemTemplate>
                </asp:Repeater>
            </table>
        </div>
    </form>
</body>
</html>

后台代码主要是查询数据库,并且多层绑定数据到Repeater对象上,下面是给出的后台代码:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class Tree : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string sql = " SELECT distinct  smc FROM dt1 ";
        if (!IsPostBack)
        {
            DataTable dt_sheng = getData(sql).Tables[0];

            rp_sheng.DataSource = dt_sheng;
            rp_sheng.DataBind();
        }
    }

    public DataSet getData( string sql)
    {

        string connection = "Provider=Microsoft.Jet.OLEDB.4.0;Server=MyMDB.mdb";
        string dbConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:/Inetpub/wwwroot/WebSite/App_Data/fu.mdb";

        System.Data.OleDb.OleDbConnection oleDbConnection = new System.Data.OleDb.OleDbConnection(dbConn);

        DataSet ds = new DataSet();

        System.Data.OleDb.OleDbDataAdapter oleDataAdapter = new System.Data.OleDb.OleDbDataAdapter(sql, oleDbConnection);

        oleDbConnection.Open();
        oleDataAdapter.Fill(ds);
        oleDataAdapter.Dispose();
        oleDbConnection.Close();
        return ds;
    }

    protected void rp_sheng_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            Repeater rep = e.Item.FindControl("rp_shi") as Repeater;//找到里层的repeater对象
            DataRowView rowv = (DataRowView)e.Item.DataItem;//找到分类Repeater关联的数据项
            //int typeid = Convert.ToInt32(rowv["smc"]); //获取填充子类的id
            string sql = "SELECT distinct  csmc FROM dt1 where smc=‘" + rowv["smc"] + "‘";
            rep.DataSource = getData(sql).Tables[0];
            rep.DataBind();
        }
    }

    protected void rp_shi_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            Repeater rep = e.Item.FindControl("rp_qu") as Repeater;//找到里层的repeater对象
            DataRowView rowv = (DataRowView)e.Item.DataItem;//找到分类Repeater关联的数据项
            string sql = "SELECT distinct  qmc FROM dt1 where csmc=‘" + rowv["csmc"] + "‘";
            rep.DataSource = getData(sql).Tables[0];
            rep.DataBind();
        }
    }

    protected void rp_qu_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            Repeater rep = e.Item.FindControl("rp_dian") as Repeater;//找到里层的repeater对象
            DataRowView rowv = (DataRowView)e.Item.DataItem;//找到分类Repeater关联的数据项
            string sql = "SELECT mdmc,mdbh,xxdz FROM dt1 where qmc=‘" + rowv["qmc"] + "‘";
            rep.DataSource = getData(sql).Tables[0];
            rep.DataBind();
        }
    }

}

手机web开发Repeater四层嵌套

时间: 2024-10-08 01:46:32

手机web开发Repeater四层嵌套的相关文章

手机web开发

jqmobi 可以代理 jquery mobile,似乎更加小和快 http://app-framework-software.intel.com/components.php bootstrap 团队做的手机端样式 http://goratchet.com/components/ ----------------------------------------------------------------------------- 电脑模拟手机 Opera Mobile Emulator C

一步一步构建手机Web开发——环境搭建篇

从2007年,乔布斯带来了第一代Iphone手机,整个移动互联网发生天翻地覆的变化,也同时证明了乔布斯的一句名言:“再一次改变世界”. 在当今的移动互联网,手机App居多,很多App对移动设备的要求也越来越高,当然,土豪就可以经常更新换代.我们这群屌丝只能望梅止渴.为了解决少部分由于硬件或者软件引起的问题,我们将App迁移到浏览器上,也就是人们常说的WebApp,WebApp相对与手机App客户端有以下优点: 1.免安装,一个浏览器就可以搞定. 2.不需要繁忙的迭代更新. 3.不需要担心存储不足

手机Web 开发中图片img 如何等比例缩放

如果图片本身没有设置 width.height属性的话,只需要修改 max-width:100%; 就可以了 如果图片本身设置了 width.height属性的话,需要同时修改width 和height 两种属性, 我的解决办法如下 <style> img { max-width: 100% !important; height: auto !important; }</style> 原文地址:https://www.cnblogs.com/acm-bingzi/p/imgZoom

webApp手机网站开发、最新H5+CSS3开发微信端网站

手机网站移动端webApp开发实践来啦,助您更快.更好的学习HTML5+css3手机网站开发知识!!! 移动端web网站(移动端web开发/APP开发).移动端App模版.手机网站模版.HTML5+CSS3网站模版,手机端网站开发模板.手机网站.移动webApp开发.移动端网站.HTML5+CSS3.手机web开发...... WebApp与Native App有何区别呢? Native App:1.开发成本非常大.一般使用的开发语言为JAVA.C++.Objective-C.2.更新体验较差.

HTML5+JS手机web开发之jQuery Mobile初涉

一.起始之语 我一直都是在PC上折腾网页的,这会儿怎么风向周边捣鼓起手机网页开发呢?原因是公司原先使用Java开发的产品,耗了不少人力财力,但是最后的效果却不怎么好.因为,Android系统一套东西,iPhone又是新的一套,折腾死人呐. 于是总监发狠,让我把手上的活都交出去,专心折腾web版的,看看最后效果如何. 加上我觊觎手机上的开发学习很久了,于是,一拍即合,搞起了手机开发方面的学习. 分享是很好的提高自身学习的方法.因为分享过程中梳理了所学,往往会有些意想不到的心得与收获.如此利人利已的

Html5 Web App 手机跨平台开发笔记

APP 开发平台包括Android 平台开发,Mac os X 平台开发以及Windows Phone 7平台开发.开发的程序都只能在各自手机系统上运行,如果开发出一种程序,能再以上任何系统上运行,那是多么美好的事情.而Html5 Mobile Web App就是其中一种跨平台方法.下面是相关知识的介绍 1.背景 HTML5是HTML的最新标准,HTML5的草案已经于2008年发布,目前W 3 C(万维网联盟)正在对此进行进一步完善.对许多人来说,早该进行这种改进了.十多年来,HTML一直没有进

Viewport在开发手机Web中的应用

目前比较主流的移动设备系统包括 Android,IOS ,Symbian,BlackBerry 与Web OS.这些系统浏览器都是基于webkit核心,而webkit号称是一款全功能的移动浏览器,支持 HTML + CSS + JavaScript,但由于移动设备本身与PC的差异,导致我们开发的网页在移动设备上总是会存在一些不如人意的地方. Viewport 翻译为中文可以叫做"视区",大家都知道移动设备的屏幕一段都比PC小很多,webkit浏览器会将一个较大的"虚拟&quo

[HTML] 微信开发之移动手机WEB页面(HTML5)Javascript实现一键拨号及短信发送功能

在做一个微信的微网站中的一个便民服务电话功能的应用,用到移动web页面中列出的电话号码,点击需要实现调用通讯录,网页一键拨号的拨打电话功能. 如果需要在移动浏览器中实现拨打电话,发送email,美国服务器,调用sns等功能,移动手机WEB页面(HTML5)Javascript提供的接口是一个好办法. 采用url链接的方式,实现在Safari ios,香港服务器,Android 浏览器,webos 浏览器,塞班浏览器,IE,Operamini等主流浏览器,进行拨打电话功能. 1.最常用WEB页面J

安卓手机移动端Web开发调试之Chrome远程调试(Remote Debugging)

一.让安卓打debug模式的apk包 二.将电脑中的chrome升级到最新版本,在chrome浏览器地址栏中输入chrome://inspect/#devices: 在智能手机还未普及时,移动设备的调试处处是alert的,这估计是最常用的办法了.以前很多时候为了预览页面在移动设备上的效果,需要先将页面上传到测试服务器,再将url输入到设备浏览器,或者使用第三方二维码扫码应用,通过移动设备访问打开浏览实际效果,每次换设备都要重复这些操作,页面多的话这些繁琐的事情就特别让人厌烦了.移动互联网的浪潮,