前言:继续讲框架,然后介绍正则的相关知识。

内容:

  1.封装分页方法,方便以后调用;响应的CSS代码也可以封装。

  2.WEB层里面的页面名称不要和model和dal里面的名称相同。

  3.两个表联合查询的方法,实现分页效果:

 public class StuAskDAL
{
public static BaseDAL<StuAsk> m_StuAskDal = new BaseDAL<StuAsk>();
// 获取到用户信息表和帖子表的联合数据
public static DataTable GetStuInnerAsk(int pageindex, int pagesize, string strWhere)
{
string strSql = string.Format(@"select top {0} *from
(select ROW_NUMBER() over (order by UserId) as rownumber,* from
(
select UI.UserId,UI.RealName,UI.UserName,UI.Pwd,UI.Phase,UI.QQ,SA.AskId,
SA.Title,SA.AskCategory from UserInfor UI inner join StuAsk SA on
UI.UserId=SA.UserId where {2}
)AB
)B where rownumber>{0}*({1}-1) ", pagesize, pageindex, strWhere);
DataTable dt = SqlHelper.ExecuteDataTable(DataBaseEnum.con, strSql, CommandType.Text, null);
return dt;
}
// 获取到用户名和帖子表的总记录数
public static int GetStuInnerAskCount()
{
string strSql = @"select UI.UserId,UI.RealName,UI.UserName,UI.Pwd,UI.Phase,UI.QQ,SA.AskId,
SA.Title,SA.AskCategory from UserInfor UI inner join StuAsk SA on
UI.UserId=SA.UserId";
DataTable dt = SqlHelper.ExecuteDataTable(DataBaseEnum.con, strSql, CommandType.Text, null);
return dt.Rows.Count;
}
}
 public partial class UserInnerAsk : System.Web.UI.Page
{
private int PageCount = ;
private int PageSize = ;//一页多少条数据
private int _pageIndex;
public int PageIndex
{
get
{
try
{
_pageIndex = Request.QueryString["page"] == null ? : Convert.ToInt32(Request.QueryString["page"].ToString());
}
catch
{
_pageIndex = ;
}
return _pageIndex;
}
set { _pageIndex = value; }
}
public string GetWhere()
{
StringBuilder sb = new StringBuilder();
sb.Append("1=1");
if (!string.IsNullOrEmpty(txtQQ.Text.Trim()) && WebSafe.SqlInsert(txtQQ.Text.Trim()))
{
sb.Append(string.Format(" and UI.QQ={0}", txtQQ.Text.Trim()));
}
return sb.ToString();
}
protected void Page_Load(object sender, EventArgs e)
{
DataTable dt = StuAskDAL.GetStuInnerAsk(PageIndex, PageSize, GetWhere());
GridView1.DataSource = dt;
GridView1.DataBind();
}
public string GetPager()
{
string s = Pager.GetPagerHtml(PageIndex, PageSize, StuAskDAL.GetStuInnerAskCount(), "UserInnerAsk.aspx");
return s;
}
protected void btnSel_Click(object sender, EventArgs e)
{ }
}

  4.和数据库交互总结:

  (1)对于一张表的话,用GetModel()获取到某一行的数据;GetCount()获取到记录数;GetList()获取到一个集合;Delete()删除;Update()更改;Add()添加。

  (2)对于多表联合查询,用SqlHelper。

  5.正则表达式:用于数据匹配。用于注册等场合,还可用于抓取数据。

  6.测试正则表达式的一个小工具:tool.chinaz.com/regex/

后记:

ASP.NET动态网站制作(29)-- 正则的更多相关文章

  1. ASP.NET动态网站制作(3)--css(2)

    前言:css分为四次课讲完,第一节课内容见ASP.NET动态网站制作(2)--css(1),接下来的内容会涉及到定位.浮动.盒子模型(第二次课).css的具体应用(第三次课).css3(第四次课).今 ...

  2. ASP.NET动态网站制作(20)-- C#(3)

    前言:C#的第三节课,继续上次课的内容,依旧围绕基础的只是讲解. 内容: 1.StringBuilder类:由于string类一旦创建,则不能更改.如果做字符串拼凑的话,将会非常耗费空间,如: str ...

  3. ASP.NET动态网站制作(1)--html

    前言:正式上课的第一课,讲的是前端部分的最基础内容:html. 前端:html,css,js 数据库:sql server 动态部分:.net,c#... IIS(Internet Informati ...

  4. ASP.NET动态网站制作(0)

    前言:一直想系统地学习一下网站建设的相关内容,看过相关的书籍,也跟着视频学过,但总觉得效率不高,学过的东西印象不深刻,或许还是自己动手实践的少.无意中免费听了一堂讲ASP.NET网站建设的课,觉得性价 ...

  5. ASP.NET动态网站制作(30)-- WEBService

    前言:继续讲正则表达式,然后介绍一下webservice. 内容: 1.匹配QQ号的正则表达式:^[1-9]\d{4,10}$:匹配手机号的正则表达式:^(0|86)?(13|14|15|18)[0- ...

  6. ASP.NET动态网站制作(28)-- 三层框架(2)

    前言:三层框架的第二节课,继续上次课的内容. 内容: 1.三层框架的使用目的:可以将视图层和业务逻辑层及实体层分开,可以提高代码的扩展性,安全性,可以实现程序的低耦合性. 2.GetModel方法及G ...

  7. ASP.NET动态网站制作(26)-- Ajax

    前言:这节课讲解关于Ajax的相关内容. 内容: 1.当点击页面中的一个按钮提交数据或请求数据的时候,整个页面的信息都会提交(不管信息是否是提交或者请求的数据,页面中所有的数据都提交),这样耗用的时间 ...

  8. ASP.NET动态网站制作(24)-- ADO.NET(3)

    前言:ADO.NET的第三节课.今天主要讲SQL Helper. 内容: 1.DataReader和DataSet的区别: (1)DataReader是一行一行地读,且只能向前读:DataSet是一次 ...

  9. ASP.NET动态网站制作(22)-- ADO.NET(1)

    前言:这节课开始真正地学习WEB开发,ADO.NET就是一组允许.NET开发人员使用标准的.机构化的,甚至无连接的方式与数据交互的技术.所属的类库为:System.Data.dll. 内容: 1.AD ...

随机推荐

  1. insert语句太长,有StringBuilder优化一下

    private void btnSave_Click(object sender, RoutedEventArgs e) { if (IsInsert) { //假设日历控件没有选日期,那帮它赋一个当 ...

  2. java源码阅读System

    1类签名与注释 public final class System System类包含一些有用的类属性和方法.该类不能被实例化,所以其所有属性与方法都是static的. 2标准输入输出流 public ...

  3. easyUI表头样式

    easyUI表头样式 学习了:https://blog.csdn.net/lucasli2016/article/details/53606609 easyUI的样式定义在easyui.css中 表头 ...

  4. 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-如何让不同的PLC程序分线程运行 TC3

    右击Tasks,添加一个新的Task   可以为这个线程设置自定义的扫描周期   然后在项目上右击添加Referenced Task   在TaskSub1上右击添加现有项,把之气写好的PRG程序绑定 ...

  5. MyEclipse图表工具Birt的使用技巧(三)--连接webservice数据源

    Web Services 技术是一套标准.它定义了应用程序怎样在Web上实现互操作. 用户能够使用不论什么语言.在不同的平台下编写Web Services.然后通过Web Services 的标准来对 ...

  6. Linux信号(signal) 机制分析(转)

    [摘要]本文分析了Linux内核对于信号的实现机制和应用层的相关处理.首先介绍了软中断信号的本质及信号的两种不同分类方法尤其是不可靠信号的原理.接着分析了内核对于信号的处理流程包括信号的触发/注册/执 ...

  7. 自行控制loadrunner的socket协议性能测试 (转)

    一前言 二任务的提出 三实现方案讨论 四技术要点讲解 如何开始录制一个最简单的收发数据包脚本 写日志文件 一行一行读数据包文件 字符串转换为十六进制数据包 发送自己定义的数据包 接收数据包到自定义缓冲 ...

  8. CSDN下载频道于2014年7月17日改版,23日-24日系统维护

    尊敬的用户你们好: CSDN于2005年推出了下载服务,经过数年的发展,下载频道的用户已经为无数用户提供了帮助.分享500万的技术资源. 感谢用户们的资源共享精神,以及对CSDN下载频道的支持 下载频 ...

  9. RabbitMQ 学习笔记(一)特点

    RabbitMQ 的具体特点 可靠性: RabbitMQ 使用一些机制来保证可靠性, 如持久化.传输确认及发布确认等. 令灵活的路由: 在消息进入队列之前,通过交换器来路由消息.对于典型的路由功能,R ...

  10. RabbitMQ快速入门python教程

    摘要:HelloWorld 简介 RabbitMQ:接受消息再传递消息,可以视为一个“邮局”.发送者和接受者通过队列来进行交互,队列的大小可以视为无限的,多个发送者可以发生给一个队列,多个接收者也可以 ...