1.我们在生成新闻或者产品详细页时只需要制作一个模板,之后向模板内传参来生成指定的一批页面,这里用到了AQControl的第三个构造函数以及标记{$public}.下面的示例演示如何生成产品详细页
示例中GetHtml.aspx中产品展示按钮的事件中这样写:
DataTable dt = AQ.DBHelper.Query("select * from t_proclass");
for (int i = 0; i < dt.Rows.Count; i++)
{
AQ.AQControl aq = new AQ.AQControl("template/proDisplay.html", "", dt.Rows[i]["pc_id"].ToString());
}
Response.Write("列表页生成完成,下面生成详细页<br />");
Response.Flush();
dt = AQ.DBHelper.Query("select * from t_pro");
for (int i = 0; i < dt.Rows.Count; i++)
{
AQ.AQControl aq = new AQ.AQControl("template/product.html", "pro/", dt.Rows[i]["p_id"].ToString());
}
Response.Write("全部完成<br />");
Response.Flush();
上面的代码首先生成产品所有分类的列表页,其次生成所有产品的详细页
分类和详细页模板都分别接受了分类id和产品id作为参数,并替换页面当中的{$public}
dt数据表,其中的数据由你自行取得,本例使用控件自带的DBHelper,你也可以使用自己的读取方法,并不影响使用。
其次在模板中这样写
{$t_pro where="p_id={$public}"}
<h4 style="text-align:center;">{p_name}</h4> <br />
{$if ("{p_img}"!="")}
<div style="text-align:center;"><img src="{p_img}" /></div><hr />
{$endif}
<h5>产品说明</h5>
{p_content}<hr />
{/$}
上面演示了详细页模板product.html中使用{$public}。列表页模板为proDisplay.html这里就不一一列举了。
{$public}是公有变量,可以替换成相应的数据,这样就可以向页面内部传参。
2.自定义分页导航。如果控件自带的分页导航不能满足你的需求,可以单独定制自己的分页样式。这里用到了AQControl的第一个构造函数
首先控件内置枚举AQPage。下面是此枚举各项值代表的意义:
AQPage.AQCurrentPage 当前页
AQPage.AQUpPage 上一页
AQPage.AQDownPage 下一页
AQPage.AQFirstPage 首页
AQPage.AQLastPage 尾页
AQPage.AQPageCount 共几页
AQPage.AQRecordCount 共几条记录
使用方法模板中没有不同,只是在CS文件中有变化,示例如下:
DataTable dt = AQ.DBHelper.Query("select * from t_proclass");
for (int i = 0; i < dt.Rows.Count; i++)
{
AQ.AQControl aq = new AQ.AQControl();
aq.AutoPageModel = true; //设置分页模式为自定义
aq.PageHtml = "<a href='/images_" + dt.Rows[i]["pc_id"].ToString() + "_1.html'>首页</a>" + " " + "<a href='/images_" + dt.Rows[i]["pc_id"].ToString() + "_" + AQPage.AQUpPage + ".html'>上一页</a>" + " " + "<a href='/images_" + dt.Rows[i]["pc_id"].ToString() + "_" + AQPage.AQDownPage + ".html'>下一页</a>" + " " + "<a href='/images_" + dt.Rows[i]["pc_id"].ToString() + "_" + AQPage.AQLastPage + ".html'>尾页</a> 当前 " + AQPage.AQCurrentPage + "/" + AQPage.AQPageCount + " 页 总计:" + AQPage.AQRecordCount + "条"; //通过设置PageHtml字段来自定义分页样式
aq.Main("template/images.html", "", dt.Rows[i]["pc_id"].ToString()); //执行模板
}
3.自定义标记
网站内容千变万化,终究会有模板标记解决不了的问题,比如特殊样式的列表等等,控件提供了自定义函数的功能,可以使你在后台方便的替换自定义标记。
标记语法:{$tag name="自定义的标记" param="参数"}
name 属性作用:自定义标记的名称
param 接收参数
注意:param是可选属性
示例中GetHtml.aspx中首页按钮的事件中这样写:
AQ.AQControl aq = new AQ.AQControl();
aq.Assemble.Add("demo1",TryDemo1);
aq.Assemble.Add("demo2", TryDemo2);
aq.Assemble.Add("demo3", TryDemo3);
aq.Main("template/index.html", "");
aq.Assemble的Add方法有两个参数,第一个参数为自定义标记中的name属性值,第二个参数是对应的方法,方法名自定义,返回类型为string,拥有一个string类型的参数。详细可以参考示例。
public string TryDemo1(string str)
{
return "无参数自定义函数演示";
}
public string TryDemo2(string str)
{
return "有参数自定义函数演示,参数为:" + str;
}
public string TryDemo3(string str)
{
string[] arr = str.Split(',');
return "和是:" + (Convert.ToInt32(arr[0]) + Convert.ToInt32(arr[1]));
}
模板中的标记为:
<p>自定义函数演示1:{$tag name="demo1"}</p>
<p>自定义函数演示2: {$tag name="demo2" param="我是传进来的参数"}</p>
<p>自定义函数演示3: {$tag name="demo3" param="1,2"}</p>
上面的所有示例,在DEMO中都能找到,如果有不明白的地方请加QQ群171787840。
至此控件就全部讲解完了,希望你使用的愉快。