Web端编写(三)——用户控件和首页2

18 篇文章 1 订阅
5 篇文章 0 订阅

没办法,没想到那么长的,这篇讲首页,也及时default.aspx,这个是IIS默认的首页,系统中用来列出所有会议。页面效果请参看上一篇博文。

先上全部页面代码,再挑重点的解释并附上相应的CSS和JS。

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="MeetingSys.Default" %>
<%@ Register TagName="WapTitle" TagPrefix="UC_Title" Src="AppUC/Title.ascx" %>
<%@ Register TagName="CopyRight" TagPrefix="UC_CopyRight" Src="AppUC/CopyRight.ascx" %>
<!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">
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-Control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <meta name="viewport" content="user-scalable=yes, width=device-width"/>
    <title></title>
    <link rel="stylesheet" type="text/css" href="..\Styles\WapStyle.css"/>
    <script type="text/javascript" src="..\Scripts\MeetingSys.js"></script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <UC_Title:WapTitle ID="TopTitle" runat="server" />
    <div id="PopMenu">
	    <p οnclick="PopContact();">联系我们</p>        
		<p οnclick="PopAbout();">关于系统</p>
	</div>
    <div id="MeetingIT">
    <asp:Repeater ID="MeetingRP" runat="server">
        <ItemTemplate>
            <ul οnclick="GoMeeting('<%#Eval("ID").ToString().Trim() %>')">
                <li>会议标题:<%#Eval("mName").ToString().Trim()%></li>
                <li>开始时间:<%#string.Format("{0:f}",Convert.ToDateTime( Eval("mTimeStar").ToString().Trim()))%></li>
                <li>结束时间:<%#string.Format("{0:f}", Convert.ToDateTime( Eval("mTimeOver").ToString().Trim()))%></li>
                <li>会议地点:<%#GetMeetingRoom(Eval("mRoom").ToString().Trim())%></li>
            </ul>
        </ItemTemplate>
    </asp:Repeater>
    </div>
    <UC_CopyRight:CopyRight ID="CopyRightUC" runat="server" />
    </div>
    </form>
</body>
</html>
第一行不用解释,aspx页面的例牌菜,不熟悉的不要去改它,改动的麻烦自己解决。

第二行和第三行都是一样的,注册用户控件,看src参数就知道了。挑第二条讲

<%@ Register TagName="WapTitle" TagPrefix="UC_Title" Src="AppUC/Title.ascx" %>这个就是注册引用上篇讲到的Title用户控件。其中TagName和TagPrefix随便自己填,但在引用位置的时候要一致。

head里面共有4个meta标签,前3个是告诉浏览器,每次打开页面的时候不使用缓存,调试期间要这样使用,最终版本可以删除,第四个meta标签是针对webkit核心浏览器使用的,告诉webview自动使用屏幕,这个标签必须保留,否则平板终端浏览时会出现滚动条的,效果异常差。

<link rel="stylesheet" type="text/css" href="..\Styles\WapStyle.css"/>和<script type="text/javascript" src="..\Scripts\MeetingSys.js"></script>分别引用CSS文件和JS文件,上篇博文也讲到这两个文件了,文件夹和文件名也讲了,这里不多讲了。

body没有些样式,因为这个样式写在样式表里面了。

body 
{
    background-color: #FFF;
    color: #000;
    font-family: droid sans fallback;
    font-size: 1em;
    margin: 0;
    padding: 0; 
    } 
<UC_Title:WapTitle ID="TopTitle" runat="server" />这个地方就引入用户控件了,因为html是顺序解释的,标题栏必须放在最上方,所以在这个位置引入。

接下来就是PopMenu层了,也就是弹出菜单层,这个层用P标签来分行,用JS函数分别对应菜单事件。

PopMenu层的样式

#PopMenu
{
    width:auto;
    height:auto;
    position:absolute;
    z-index:10;
    margin-top:21px;
    padding:5px 5px 5px 5px;
    right:15px;
    -moz-border-radius: 5px;
    -webkit-border-radius: 5px;
    -webkit-box-shadow: 2px 2px 10px #909090;
    border: 1px solid #444;
    background-color: #058BB0;
    display:none;
    }
PopContact()的JS函数

//弹出联系我们
function PopContact() {
    document.getElementById("PopMenu").style.display = "none";
    document.getElementById("Mask").style.display = "block";
    document.getElementById("ContactDiv").style.display = "block";
}
PopAbout()的JS函数

//弹出关于系统层
function PopAbout() {
    document.getElementById("PopMenu").style.display = "none";
    document.getElementById("Mask").style.display = "block";
    document.getElementById("AboutDiv").style.display = "block";
}

上述代码都很简单,就不多讲究了,CSS代码基本都那鸟样,多写几个就熟练了。

接下来是MeetingIT层,这里面包含了一个服务器端的控件Repeater,用于列出所有会议,这里稍微复杂了点。

先给出MeetingIT的样式,用于控制显示内容所处位置,注意使用了ul和li,样式有继承的。

#MeetingIT
{
    position:absolute;
    width:96%;  
    left:2%;
    right:2%;  
    top:2em;  
	padding:0px;  
    height:auto; 
    }
#MeetingIT ul
{
    display:block;
    list-style:none;
    border: 1px solid #999;
    -webkit-border-radius: 5px;
    -webkit-box-shadow: 2px 2px 10px #909090;
    background:#dddddd;
    padding:0px;
    width:100%;
    }
#MeetingIT ul li
{
    padding-left:1em;
    padding-right:1em;
    font-size:1em;
    text-align:left;
    }
Repeater控件的用法很简单,有多少条数据,就会自动重复多少个ItemTemplate,把数据绑定就可以了,在ItemTemplate里面需要显示数据的地方,用Eval("字段名")就可以了。

好,在页面加载函数中来绑定数据,并把标题栏的文字传递过去。

protected void Page_Load(object sender, EventArgs e)
        {
            this.Title = "会议系统";
            DataTable DT = MeetingOP.DataOP.GetDataTable("Select * from Meeting");
            if (DT.Rows.Count > 0)
            {
                MeetingRP.DataSource = DT;
                MeetingRP.DataBind();
                TopTitle.sTitle = "请选择需要参加的会议";
            }
            else
            {
                TopTitle.sTitle = "目前好像还没有准备召开的会议";
            }
        }
TopTitle.sTitle = "请选择需要参加的会议";就是传递参数用的,TopTitle是用户控件加载的ID,这样的用户控件可以在同一页面加载多次的,ID不同就可以了。

上面的代码也很简单,用SQL指令读取数据放在一个DataTable里面,如果有数据就绑定Repeater里,没有就在标题栏显示提示信息。注意,这里因为是调试阶段,没有对会议进行筛选,是列出所有会议的,最终版本是需要筛选的;还有就是使用到DataTable来定义变量,需要“using System.Data;”的,IDE不会自动添加的,要自己手动写上去。

<li>会议地点:<%#GetMeetingRoom(Eval("mRoom").ToString().Trim())%></li>这里用了一个函数,因为数据库里面会议室是一个数字,要转成会议室名称的,所以要写一个函数来转

        protected static string GetMeetingRoom(string ID)
        {
            return MeetingOP.DataOP.GetAny("MeetingRoom", "mName","ID",ID);
        }
由于ul是在ItemTemplate里面,每个ItemTemplate都会生成一个ul,所以ul的onclick函数使用了<%#Eval("ID").ToString().Trim() %>来获取会议ID做参数,这样单击ul就可以进入下一个页面了。

//进入指定ID的会议,查看会议议程
function GoMeeting(MeetingID) {
    window.location= "Meeting.aspx?ID=" + MeetingID;
}
这个页面跳转很坑爹的,必须使用window.location的方法,其余一律不行,webview不认其他跳转方法的。
后面的版权声明就不多说了,我蛋疼写的多余东西。
OK,到这里就可以搞定第一个页面了,可以很像手机APP的方式搞定default.aspx了,上面的代码可以看得很清楚,下个页面就是Meeting.aspx了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值