主页后台源码主要是实现数据绑定,即用 SQL 语句从数据库选出记录,然后绑定到控件上,代码实现比较简单。除数据绑定外,还有给控件赋值、字符串的连接方法以及控件的显示与隐藏。
一、主页后台源码涉及到的知识点
1、给服务器端控件(Literal)赋值;
2、数据绑定;
3、字符串的连接方法;
4、根据内容有无显示隐藏控件。
二、知识点分析
1、给服务器端控件(Literal)赋值
非列表型常用服务器端控件有 Literal、Label、HyperLink、Image、HiddenField、TextBox、Button,不用提交表单的页面常用前四个,用提交表单的常用后三个。
Literal 与 Label 都是向前台输出文本,区别在于 Literal 只输出文字不输出任何 Html 元素,而 Label 输出 Html 元素与文字,即用 文字;
HyperLink 是超链接,在前台输出
文字
;
Image 是图片,在前台输出 ;
后三个在提交表单的页再一一介绍。主页用 Literal 给主页标题、关键词和描述赋值,例如给主页标题赋值的前台代码为:
后台代码为:
litTitle.Text =PublicStatic.webName +"_"+PublicStatic.keywords;
从赋值代码中可以看出,主页标题由“网站名称和关键词组成”,这样有利在搜索引擎中获得排名。名称(webName)和关键词(keywords)都是引用静态类(PublicStatic)中的变量,它们由该类从数据库中取出,具体实现可查看PublicStatic类。
2、数据绑定
实现过程:先从数据库或文件中取出记录,然后绑定到控件上。
由于主页打开速度越快越好,所以选用输出数据最少的 Repeater 控件来绑定数据,以绑定“公司新闻”为例如。
前台代码为:
.htm"target="_blank"> 12 ? EpWeb.privates.classes.PublicClass.newstr(EpWeb.privates.classes.PublicClass.ToString(Eval("newsname")), 12) +"…": EpWeb.privates.classes.PublicClass.ToString(Eval("newsname"))%>[]
后台代码:
//绑定新闻
private voidBindNews()
{
stringstrSQL ="Select top 11 newsid,newsname,adddate From news Order By adddate Desc";
DataTabledt =SqlData.dataTable(strSQL);
repNews.DataSource = dt.DefaultView;
repNews.DataBind();
}
后台代码把绑定的过程定义为一个方法,实现过程如下:
1)首先定义从数据库取数据的 SQL 语句,SQL 语句的意思是:从数据库的新闻表(news)取出按添加日期(adddate)排序的 11 条记录(top 11),选出字段为:newsid,newsname,adddate;
2)然后调用SqlData类的 dataTable 方法执行 SQL 语句,并把获取到的记录赋给DataTable变量 dt;类SqlData主要实现连接数据库和从数据库中取出记录,具体实现方法请看SqlData类;
3)把取出的数据绑定到控件 Repeater 上,用方法中的后面两句代码。
以上虽然只举了 Repeater 控件的绑定方法,其它控件的绑定方法也一样。
3、字符串的连接方法
把几个字符连起来赋给一个变量,通常有两种方法。
1)用加号 + 连接,代码如下:
stringnames ="李"+"和"+"友";
2)用string.Format,以主页中的给关键词赋为例,代码如下:
stringmeta ="";
litKeywords.Text =string.Format(meta,"Keywords",PublicStatic.keywords);
变量 meta 中有 和 ,它们是用来被字符串取代的编号,将被"Keywords"取代, 将被PublicStatic.keywords 取代。
4、根据内容有无显示隐藏控件
Asp.net 控件的隐藏与显示用 Visible 属性;不设置 Visible,或设置为真,则显示控件;设置为假,则隐控件。主页中“友情链接”部分,要据是否添加了友情链接来决定是否显示该部分。
前台代码如下:
友情链接:
"target="_blank">
代码中用了 Panel 控件,并把 Visible="false",即设置为隐藏。
后台代码如下:
//绑定友情链接
private voidBindLink()
{
stringstrSQL ="select sitename,url from friendlink";
DataTabledt =SqlData.dataTable(strSQL);
if(dt.Rows.Count > 0)
{
repLink.DataSource = dt;
repLink.DataBind();
paLink.Visible =true;
}
}
如果从数据库中能选择出“友情链接”记录(即if(dt.Rows.Count > 0)),则显示 Panel 控件(即 paLink.Visible =true)。
三、完整源码
namespaceEpWeb
{
public partial classindex: System.Web.UI.Page
{
protected voidPage_Load(objectsender,EventArgse)
{
SetWebHeader();
BindNews();
BindProduct();
BindClass();
BindLink();
}
private voidSetWebHeader()
{
litTitle.Text =PublicStatic.webName +"_"+PublicStatic.keywords;
stringmeta ="";
litKeywords.Text =string.Format(meta,"Keywords",PublicStatic.keywords);
litDescription.Text =string.Format(meta,"Description",PublicStatic.description);
}
//绑定产品
private voidBindProduct()
{
//绑定最新供应
stringstrSQL ="Select top 6 id,pname,psize,price1,pic,pic1 From product Where newProduct = 1 and firstFlag = 1 Order By adddate Desc,id Desc";
DataTabledt =SqlData.dataTable(strSQL);
repNewProduct.DataSource = dt.DefaultView;
repNewProduct.DataBind();
//绑定推荐产品
strSQL ="Select top 7 id,pname,psize,price1,pic,pic1 From product Where recommend = 1 and firstFlag = 1 Order By adddate Desc,id Desc";
dt =SqlData.dataTable(strSQL);
repRecommend.DataSource = dt.DefaultView;
repRecommend.DataBind();
//绑定产品
strSQL ="Select top 8 id,pname,psize,price1,pic,pic1 From product Where recommend = 0 and firstFlag = 1 Order By adddate Desc,id Desc";
dt =SqlData.dataTable(strSQL);
repProduct.DataSource = dt.DefaultView;
repProduct.DataBind();
}
//绑定分类
private voidBindClass()
{
stringstrSQL ="Select Top 14 categoryid,category From category order by categoryorder";
DataTabledt =SqlData.dataTable(strSQL);
repClass.DataSource = new DataView(dt);
repClass.DataBind();
}
//绑定新闻
private voidBindNews()
{
stringstrSQL ="Select top 11 newsid,newsname,adddate From news Order By adddate Desc";
DataTabledt =SqlData.dataTable(strSQL);
repNews.DataSource = dt.DefaultView;
repNews.DataBind();
}
//绑定友情链接
private voidBindLink()
{
stringstrSQL ="select sitename,url from friendlink";
DataTabledt =SqlData.dataTable(strSQL);
if(dt.Rows.Count > 0)
{
repLink.DataSource = dt;
repLink.DataBind();
paLink.Visible =true;
}
}
}
}
领取专属 10元无门槛券
私享最新 技术干货