绝大多数高级用法,都是用到了控件的扩展属性,都是先实例化一个无参数的构造函数,设置好扩展属性,最后使用Main方法执行模板。
1.我们在生成新闻或者产品详细页时只需要制作一个模板,之后向模板内传参来生成指定的一批页面,这里用到了AQControl的第三个构造函数以及标记{$public}.下面的示例演示如何生成产品详细页
示例中GetHtml.aspx中生成新闻按钮的事件中这样写:
AQ.AQControl aq = new AQ.AQControl();
//这里使用了三个参数的构造函数,第一个是模板路径,第二个是生成路径,第三个参数用来替换模板中的{$public},生成页面的命名规则为 原文件名_传进来的参数.html
//数据访问助手为AQ自带,也可以用你自己的类,对生成页面并没有影响
DataTable dt = AQ.DBHelper.Query("select * from t_news").Tables[0];
for (int i = 0; i < dt.Rows.Count; i++)
{
aq = new AQ.AQControl("template/news.html", "news/", dt.Rows[i]["n_id"].ToString());
}
详细页模板接收新闻id作为参数,并替换模板当中的{$public}
dt数据表,其中的数据由你自行取得,本例使用控件自带的DBHelper,你也可以使用自己的读取方法,并不影响使用。
其次在模板中这样写
<div class="indexproductinner">
<!--{$public}是生成代码里构造函数第三个参数传进来的值-->
{$t_news where="n_id={$public}" id="detail"}
<h4 class="center">{detail:n_title}</h4>
<div class="extendinfo center"> </div>
<div class="info">{detail:n_content}</div>
{/$}
</div>
{$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()); //执行模板
}
上面的代码例子为v2.8之前的版本所设,控件从2.8版本开始有了更加灵活的自定义分页导航方法,请按如下步骤:
1.新建一个类,名称虽然是随便起,但是建议起成有意义的名字例如:MyPagesStyle。并继承AQ.PagesStyle。
2.在类里重写CustomPagesStyle方法。
3.重写完毕后返回生成控制的CS文件里如下调用:
AQ.AQControl aq = new AQ.AQControl();
aq.AutoPageModel = true;
aq.PagesStyle = new SonPagesStyle();
aq.Main("模板路径", "生成路径");
4.完毕
具体详细的使用可以参见Demo中的示例.
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。
至此控件就全部讲解完了,希望你使用的愉快。