1先写一些常用的公共类:

在Web.config文件中的配置:

<!-- appSettings网站信息配置-->
<appSettings>
<add key="Configpath" value="~/xmlconfig/site.config"/>
<add key="Urlspath" value="~/xmlconfig/urls.config"/>
<add key="Userpath" value="~/xmlconfig/user.config"/>
</appSettings>
<!-- 数据库连接字符串-->
<connectionStrings>
<add name="ConnectionString" connectionString="server=.\;uid=sa;pwd=123;database=Test;"/>
</connectionStrings>

2、在DbHelperSQL.cs中写基本的对数据库操作的方法

  public abstract class DbHelperSQL
{
//数据库连接字符串(web.config来配置),可以动态更改connectionString支持多数据库.
public static string connectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
public DbHelperSQL(){ } /// <summary>
/// 执行查询语句,返回DataSet
/// </summary>
/// <param name="SQLString">查询语句</param>
/// <returns>DataSet</returns>
public static DataSet Query(string SQLString)
{ using (SqlConnection connection = new SqlConnection(connectionString))
{
DataSet ds = new DataSet();
try
{
connection.Open();
SqlDataAdapter command = new SqlDataAdapter(SQLString, connection);
command.Fill(ds, "ds");
}
catch (System.Data.SqlClient.SqlException ex)
{
throw new Exception(ex.Message);
}
return ds;
} } #region 执行带参数的SQL语句 /// <summary>
/// 执行SQL语句,返回影响的记录数
/// </summary>
/// <param name="SQLString">SQL语句</param>
/// <returns>影响的记录数</returns>
public static int ExecuteSql(string SQLString, params SqlParameter[] cmdParms)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
using (SqlCommand cmd = new SqlCommand())
{
try
{
PrepareCommand(cmd, connection, null, SQLString, cmdParms);
int rows = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return rows;
}
catch (System.Data.SqlClient.SqlException e)
{
throw e;
}
}
}
} /// <summary>
/// 删除一条数据
/// </summary>
public bool Delete(int id)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("delete from dt_sys_channel ");
strSql.Append(" where id=@id");
SqlParameter[] parameters = {
new SqlParameter("@id", SqlDbType.Int,)};
parameters[].Value = id; int rows = DbHelperSQL.ExecuteSql(strSql.ToString(), parameters);
if (rows > )
{
return true;
}
else
{
return false;
}
} }

3、在后台代码中进行调用

        /// <summary>
/// 数据访问类:系统频道
/// </summary>
public partial class sys_channel
{
public sys_channel()
{}
/// <summary>
/// 更新一条数据
/// </summary>
public bool Update(DTcms.Model.sys_channel model)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("update dt_sys_channel set ");
strSql.Append("model_id=@model_id,");
strSql.Append("name=@name,");
strSql.Append("title=@title,");
strSql.Append("sort_id=@sort_id");
strSql.Append(" where id=@id");
SqlParameter[] parameters = {
new SqlParameter("@model_id", SqlDbType.Int,),
new SqlParameter("@name", SqlDbType.NVarChar,),
new SqlParameter("@title", SqlDbType.NVarChar,),
new SqlParameter("@sort_id", SqlDbType.Int,),
new SqlParameter("@id", SqlDbType.Int,)};
parameters[].Value = model.model_id;
parameters[].Value = model.name;
parameters[].Value = model.title;
parameters[].Value = model.sort_id;
parameters[].Value = model.id; int rows = DbHelperSQL.ExecuteSql(strSql.ToString(), parameters);
if (rows > )
{
return true;
}
else
{
return false;
}
} /// <summary>
/// 删除一条数据
/// </summary>
public bool Delete(int id)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("delete from dt_sys_channel ");
strSql.Append(" where id=@id");
SqlParameter[] parameters = {
new SqlParameter("@id", SqlDbType.Int,)};
parameters[].Value = id; int rows = DbHelperSQL.ExecuteSql(strSql.ToString(), parameters);
if (rows > )
{
return true;
}
else
{
return false;
}
} /// <summary>
/// 得到一个对象实体
/// </summary>
public DTcms.Model.sys_channel GetModel(int id)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("select top 1 id,model_id,name,title,sort_id from dt_sys_channel ");
strSql.Append(" where id=@id");
SqlParameter[] parameters = {
new SqlParameter("@id", SqlDbType.Int,)};
parameters[].Value = id; DTcms.Model.sys_channel model = new DTcms.Model.sys_channel();
DataSet ds = DbHelperSQL.Query(strSql.ToString(), parameters);
if (ds.Tables[].Rows.Count > )
{
if (ds.Tables[].Rows[]["id"] != null && ds.Tables[].Rows[]["id"].ToString() != "")
{
model.id = int.Parse(ds.Tables[].Rows[]["id"].ToString());
}
if (ds.Tables[].Rows[]["model_id"] != null && ds.Tables[].Rows[]["model_id"].ToString() != "")
{
model.model_id = int.Parse(ds.Tables[].Rows[]["model_id"].ToString());
}
if (ds.Tables[].Rows[]["name"] != null && ds.Tables[].Rows[]["name"].ToString() != "")
{
model.name = ds.Tables[].Rows[]["name"].ToString();
}
if (ds.Tables[].Rows[]["title"] != null && ds.Tables[].Rows[]["title"].ToString() != "")
{
model.title = ds.Tables[].Rows[]["title"].ToString();
}
if (ds.Tables[].Rows[]["sort_id"] != null && ds.Tables[].Rows[]["sort_id"].ToString() != "")
{
model.sort_id = int.Parse(ds.Tables[].Rows[]["sort_id"].ToString());
}
return model;
}
else
{
return null;
}
} /// <summary>
/// 获得数据列表
/// </summary>
public DataSet GetList(string strWhere)
{
StringBuilder strSql=new StringBuilder();
strSql.Append("select id,model_id,name,title,sort_id,model_title ");
strSql.Append(" FROM view_sys_channel ");
if(strWhere.Trim()!="")
{
strSql.Append(" where "+strWhere);
}
strSql.Append(" order by sort_id asc,id desc");
return DbHelperSQL.Query(strSql.ToString());
} }

4、后台代码

public partial class sys_channel
{
private readonly DTcms.DAL.sys_channel dal = new DTcms.DAL.sys_channel();
public sys_channel()
{} /// <summary>
/// 增加一条数据
/// </summary>
public int Add(DTcms.Model.sys_channel model)
{
return dal.Add(model);
} /// <summary>
/// 更新一条数据
/// </summary>
public bool Update(DTcms.Model.sys_channel model)
{
return dal.Update(model);
} /// <summary>
/// 删除一条数据
/// </summary>
public bool Delete(int id)
{
return dal.Delete(id);
} /// <summary>
/// 得到一个对象实体
/// </summary>
public DTcms.Model.sys_channel GetModel(int id)
{
return dal.GetModel(id);
} /// <summary>
/// 获得数据列表
/// </summary>
public DataSet GetList(string strWhere)
{
return dal.GetList(strWhere);
} }

5、页面后台代码

public partial class sys_channel_edit : DTcms.Web.UI.ManagePage
{
private string action = DTEnums.ActionEnum.Add.ToString(); //操作类型
private int id = ; protected void Page_Load(object sender, EventArgs e)
{
string _action = DTRequest.GetQueryString("action");
if (!string.IsNullOrEmpty(_action) && _action == DTEnums.ActionEnum.Edit.ToString())
{
this.action = DTEnums.ActionEnum.Edit.ToString();//修改类型
if (!int.TryParse(Request.QueryString["id"] as string, out this.id))
{
JscriptMsg("传输参数不正确!", "back", "Error");
return;
}
if (!new DTcms.BLL.sys_channel().Exists(this.id))
{
JscriptMsg("信息不存在或已被删除!", "back", "Error");
return;
}
}
if (!Page.IsPostBack)
{
TreeBind(this.ddlModelId); //绑定模型
if (action == DTEnums.ActionEnum.Edit.ToString()) //修改
{
ShowInfo(this.id);
}
}
} #region 绑定模型=================================
private void TreeBind(DropDownList ddl)
{
DTcms.BLL.sys_model bll = new DTcms.BLL.sys_model();
DataTable dt = bll.GetList("").Tables[]; ddl.Items.Clear();
ddl.Items.Add(new ListItem("请选择模型", ""));
foreach (DataRow dr in dt.Rows)
{
ddl.Items.Add(new ListItem(dr["title"].ToString(), dr["id"].ToString()));
}
}
#endregion #region 赋值操作=================================
private void ShowInfo(int _id)
{
BLL.sys_channel bll = new BLL.sys_channel();
Model.sys_channel model = bll.GetModel(_id);
txtName.Text = model.name;
hidName.Value = model.name;
txtTitle.Text = model.title;
ddlModelId.SelectedValue = model.model_id.ToString();
txtSortId.Text = model.sort_id.ToString();
//绑定URL配置列表
rptList.DataSource = new BLL.url_rewrite().GetList(model.id.ToString());
rptList.DataBind();
}
#endregion #region 根据类型返回文件名========================
//private string GetPageName(string _name, string page_type)
//{
// string result = "";
// switch (page_type)
// {
// case "index":
// result = _name + ".aspx";
// break;
// case "list":
// result = _name + "_list.aspx";
// break;
// case "detail":
// result = _name + "_show.aspx";
// break;
// }
// return result;
//}
#endregion #region 返回页面的类型============================
protected string GetPageTypeName(string _type_name)
{
string result = "";
switch (_type_name)
{
case "index":
result = "首页";
break;
case "list":
result = "列表页";
break;
case "detail":
result = "详细页";
break;
}
return result;
}
#endregion #region 查询频道的页面继承类======================
private string GetInherit(int model_id, string page_type)
{
string result = "";
BLL.sys_model bll = new BLL.sys_model();
Model.sys_model model = bll.GetModel(model_id);
if (model != null)
{
switch (page_type)
{
case "index":
result = model.inherit_index;
break;
case "list":
result = model.inherit_list;
break;
case "detail":
result = model.inherit_detail;
break;
}
}
return result;
}
#endregion #region 增加操作=================================
private bool DoAdd()
{
Model.sys_channel model = new Model.sys_channel();
BLL.sys_channel bll = new BLL.sys_channel();
model.name = txtName.Text.Trim();
model.title = txtTitle.Text.Trim();
model.model_id = int.Parse(ddlModelId.SelectedValue);
model.sort_id = int.Parse(txtSortId.Text.Trim());
int new_id = bll.Add(model); //保存
if (new_id < )
{
return false;
}
#region 保存URL配置.开始===================================
BLL.url_rewrite bll2 = new BLL.url_rewrite();
bll2.Remove("channel", new_id.ToString()); //先删除
string[] itemTypeArr = Request.Form.GetValues("item_type");
string[] itemNameArr = Request.Form.GetValues("item_name");
string[] itemPathArr = Request.Form.GetValues("item_path");
string[] itemPatternArr = Request.Form.GetValues("item_pattern");
string[] itemQuerystringArr = Request.Form.GetValues("item_querystring");
string[] itemTempletArr = Request.Form.GetValues("item_templet");
string[] itemPageArr = Request.Form.GetValues("item_page");
if (itemTypeArr != null && itemNameArr != null && itemPathArr != null
&& itemPatternArr != null && itemQuerystringArr != null && itemTempletArr != null && itemPageArr != null)
{
if ((itemTypeArr.Length == itemNameArr.Length) && (itemNameArr.Length == itemPathArr.Length) && (itemPathArr.Length == itemPatternArr.Length)
&& (itemPatternArr.Length == itemQuerystringArr.Length) && (itemQuerystringArr.Length == itemTempletArr.Length))
{
for (int i = ; i < itemTypeArr.Length; i++)
{
bll2.Add(new Model.url_rewrite
{
name = itemNameArr[i].Trim(),
path = itemPathArr[i].Trim(),
pattern = itemPatternArr[i].Trim(),
//page = GetPageName(model.name, itemTypeArr[i].Trim()), //源页面地址
page = itemPageArr[i].Trim(),
querystring = itemQuerystringArr[i].Trim(),
templet = itemTempletArr[i].Trim(),
channel = new_id.ToString(),
type = itemTypeArr[i].Trim(),
inherit = GetInherit(model.model_id, itemTypeArr[i].Trim()) //继承的类名
});
}
}
}
#endregion 保存URL配置.结束 return true;
}
#endregion #region 修改操作=================================
private bool DoEdit(int _id)
{
DTcms.BLL.sys_channel bll = new DTcms.BLL.sys_channel();
DTcms.Model.sys_channel model = bll.GetModel(_id);
model.name = txtName.Text.Trim();
model.title = txtTitle.Text.Trim();
model.model_id = int.Parse(ddlModelId.SelectedValue);
model.sort_id = int.Parse(txtSortId.Text.Trim());
if (!bll.Update(model))
{
return false;
} #region 保存URL配置.开始===================================
BLL.url_rewrite bll2 = new BLL.url_rewrite();
bll2.Remove("channel", model.id.ToString()); //先删除
string[] itemTypeArr = Request.Form.GetValues("item_type");
string[] itemNameArr = Request.Form.GetValues("item_name");
string[] itemPathArr = Request.Form.GetValues("item_path");
string[] itemPatternArr = Request.Form.GetValues("item_pattern");
string[] itemQuerystringArr = Request.Form.GetValues("item_querystring");
string[] itemTempletArr = Request.Form.GetValues("item_templet");
string[] itemPageArr = Request.Form.GetValues("item_page");
if (itemTypeArr != null && itemNameArr != null && itemPathArr != null
&& itemPatternArr != null && itemQuerystringArr != null && itemTempletArr != null)
{
if ((itemTypeArr.Length == itemNameArr.Length) && (itemNameArr.Length == itemPathArr.Length) && (itemPathArr.Length == itemPatternArr.Length)
&& (itemPatternArr.Length == itemQuerystringArr.Length) && (itemQuerystringArr.Length == itemTempletArr.Length))
{
for (int i = ; i < itemTypeArr.Length; i++)
{
bll2.Add(new Model.url_rewrite
{
name = itemNameArr[i].Trim(),
path = itemPathArr[i].Trim(),
pattern = itemPatternArr[i].Trim(),
//page = GetPageName(model.name, itemTypeArr[i].Trim()), //源页面地址
page = itemPageArr[i].Trim(),
querystring = itemQuerystringArr[i].Trim(),
templet = itemTempletArr[i].Trim(),
channel = model.id.ToString(),
type = itemTypeArr[i].Trim(),
inherit = GetInherit(model.model_id, itemTypeArr[i].Trim()) //继承的类名
});
}
}
}
#endregion 保存URL配置.结束 return true;
}
#endregion //保存
protected void btnSubmit_Click(object sender, EventArgs e)
{
if (action == DTEnums.ActionEnum.Edit.ToString()) //修改
{
ChkAdminLevel("sys_channel", DTEnums.ActionEnum.Edit.ToString()); //检查权限
if (!DoEdit(this.id))
{
JscriptMsg("保存过程中发生错误啦!", "", "Error");
return;
}
JscriptMsg("修改信息成功啦!", "sys_channel_list.aspx", "Success", "parent.loadChannelTree");
}
else //添加
{
ChkAdminLevel("sys_channel", DTEnums.ActionEnum.Add.ToString()); //检查权限
if (!DoAdd())
{
JscriptMsg("保存过程中发生错误啦!", "", "Error");
return;
}
JscriptMsg("添加信息成功啦!", "sys_channel_list.aspx", "Success", "parent.loadChannelTree");
}
} }

6、前台代码

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="sys_channel_edit.aspx.cs" Inherits="DTcms.Web.admin.settings.sys_channel_edit" ValidateRequest="false" %>

<!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>
<title>编辑频道信息</title>
<link href="../../scripts/ui/skins/Aqua/css/ligerui-all.css" rel="stylesheet" type="text/css" />
<link href="../images/style.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="../../scripts/jquery/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="../../scripts/jquery/jquery.validate.min.js"></script>
<script type="text/javascript" src="../../scripts/jquery/messages_cn.js"></script>
<script type="text/javascript" src="../../scripts/ui/js/ligerBuild.min.js"></script>
<script type="text/javascript" src="../js/function.js"></script>
<script type="text/javascript">
//表单验证
$(function () {
$('#txtName').focus();
$("#form1").validate({
errorPlacement: function (lable, element) {
element.ligerTip({ content: lable.html(), appendIdTo: lable });
},
rules: {
txtName: {
required: true,
minlength: ,
maxlength: ,
remote: {
type: "post",
url: "../../tools/admin_ajax.ashx?action=sys_channel_validate",
data: {
channelname: function () {
return $("#txtName").val();
},
oldname: function () {
return $("#hidName").val();
}
},
dataType: "html",
dataFilter: function (data, type) {
if (data == "true")
return true;
else
return false;
}
}
}
},
success: function (lable) {
lable.ligerHideTip();
},
messages: {
txtName: {
required: "输入(2-100)位字符",
minlength: "必须大于2位字符",
maxlength: "必须小于100位字符",
remote: "很抱歉,该名称已被使用"
}
}
});
});
//菜单事件处理
$(function () {
//初始化按钮事件
$("#item_box tr").each(function (i) {
initButton(i);
});
//添加按钮(点击绑定)
$("#itemAddButton").click(function () {
showChannelDialog();
});
}); //表格行的菜单内容
function getTr() {
var navRow = '<tr class="td_c">'
+ '<td><input type="hidden" name="item_type" /><input type="hidden" name="item_page" /><span class="item_type"></span></td>'
+ '<td><input name="item_name" type="text" class="txtInput small" style="width:98%;" readonly="readonly" /></td>'
+ '<td><input name="item_path" type="text" class="txtInput small3" style="width:98%;" readonly="readonly" /></td>'
+ '<td><input name="item_pattern" type="text" class="txtInput small3" style="width:98%;" readonly="readonly" /></td>'
+ '<td><input name="item_querystring" type="text" class="txtInput small3" style="width:98%;" readonly="readonly" /></td>'
+ '<td><input name="item_templet" type="text" class="txtInput small" style="width:98%;" readonly="readonly" /></td>'
+ '<td align="center"><img alt="编辑" src="../images/icon_edit.gif" class="operator" /><img alt="删除" src="../images/icon_del.gif" class="operator" /></td>'
+ '</tr>';
return navRow;
} //初始化按钮事件
function initButton(indexValue) {
//功能操作按钮
$("#item_box tr:eq(" + indexValue + ") .operator").each(function (i) {
switch (i) {
//修改
case :
$(this).click(function () {
showChannelDialog(this);
});
break;
//删除
case :
$(this).click(function () {
var obj = $(this);
$.ligerDialog.confirm("确定要删除吗?", "提示信息", function (result) {
if (result) {
obj.parent().parent().remove(); //删除节点
}
});
});
break;
}
});
} //给URL配置首页赋值
function itemSelect(obj) {
var value = $(obj).children("option:selected").attr("value");
if (value.length < ) {
return false;
}
var channelName = $("#txtName").val(); //获得频道名称
if (channelName.length < ) {
return false;
}
//咨询是否使用默认设置
$.ligerDialog.confirm("是否使用参考配置?做为参考,请根据自己实际情况调整。", "提示信息", function (result) {
if (result) {
switch (value) {
case "list":
$("#urlKey").val(channelName + "_list");
$("#urlExp").val(channelName + "/{0}/{1}.aspx");
$("#var_box").empty(); //清空旧数据
$("#var_box").append(createVarHtml()); //插入一行
$("#var_box tr:last").find("input[name='varName']").val("category_id");
$("#var_box tr:last").find("input[name='varExp']").val("(\\d+)");
$("#var_box").append(createVarHtml()); //插入一行
$("#var_box tr:last").find("input[name='varName']").val("page");
$("#var_box tr:last").find("input[name='varExp']").val("(\\w+)");
$("#pageTemplet").val(channelName + "_list");
$("#urlPage").val(channelName + "_list");
break;
case "detail":
$("#urlKey").val(channelName + "_show");
$("#urlExp").val(channelName + "/show/{0}.aspx");
$("#var_box").empty(); //清空旧数据
$("#var_box").append(createVarHtml()); //插入一行
$("#var_box tr:last").find("input[name='varName']").val("id");
$("#var_box tr:last").find("input[name='varExp']").val("(\\d+)");
$("#pageTemplet").val(channelName + "_show");
$("#urlPage").val(channelName + "_show");
break;
default:
$("#var_box").empty(); //清空旧数据
$("#urlKey").val(channelName);
$("#urlExp").val(channelName + ".aspx");
$("#pageTemplet").val(channelName);
$("#urlPage").val(channelName);
break;
}
}
});
} //===================================================================================
//创建窗口
function showChannelDialog(obj) {
var objNum = arguments.length;
var tabHtml = createChannelHtml();
var m = $.ligerDialog.open({
type: "",
title: "URL重写配置",
content: tabHtml,
width: ,
buttons: [
{ text: '确认', onclick: function () {
if (objNum > ) {
execChannelDialog(m, obj);
} else {
execChannelDialog(m);
}
}
},
{ text: '关闭', onclick: function () {
m.close();
}
}
],
isResize: true
});
//检查是否修改状态
if (objNum == ) {
//调用赋值函数
setChannelDialog(obj);
}
} //创建HTML
function createChannelHtml() {
var tableHtml = '<table class="form_table">'
+ '<col width="130px"><col>'
+ '<tbody>'
+ '<tr>'
+ '<th>频道类型:</th>'
+ '<td><select id="pageType" class="select2" onchange="itemSelect(this);"><option value="">请选择类型...</option><option value="index">首页</option><option value="list">列表页</option><option value="detail">详细页</option></select></td>'
+ '</tr><tr>'
+ '<th>URL名称(Key):</th>'
+ '<td><input type="text" id="urlKey" class="txtInput small ime-disabled" /><label>*调用的唯一标识,英文、数字、下划线</label></td>'
+ '</tr><tr>'
+ '<th>重写表达式:</th>'
+ '<td><input type="text" id="urlExp" class="txtInput small ime-disabled" style="width:210px;" /><label>*如:article-{0}-{1}.aspx,{n}表示第N个变量</label></td>'
+ '</tr><tr>'
+ '<th>传输参数:</th>'
+ '<td><button id="btnVarAdd" type="button" class="btnSelect" onclick="addVarTr();"><span class="add">增加变量</span></button></td>'
+ '</tr><tr>'
+ '<th>&nbsp;</th>'
+ '<td><table border="0" cellspacing="0" cellpadding="0" class="border_table" width="98%">'
+ '<thead><tr><th width="40%">变量名称</th><th>正则表达式</th><th width="3%">操作</th></tr></thead>'
+ '<tbody id="var_box">'
+ '</tbody></table></td>'
+ '</tr><tr>'
+ '<th>模板文件:</th><td><input type="text" id="pageTemplet" value="" class="txtInput small ime-disabled" />.html</td>'
+ '</tr><tr>'
+ '<th>生成的文件:</th><td><input type="text" id="urlPage" value="" class="txtInput small ime-disabled" />.aspx</td>'
+ '</tr>'
+ '</tbody>'
+ '</table>'
return tableHtml;
}
//创建URL变量HTML
function createVarHtml() {
varHtml = '<tr>'
+ '<td><select class="select2" onchange="regChannelVal(this, \'varName\');"><option value="">@参考</option><option value="category_id">类别ID</option><option value="page">分页页码</option></select>'
+ '<input type="text" name="varName" class="txtInput small ime-disabled" /></td>'
+ '<td><select class="select2" onchange="regChannelVal(this, \'varExp\');"><option value="">@参考</option><option value="(\\w+)">字符串</option><option value="(\\d+)">数字</option></select>'
+ '<input type="text" name="varExp" class="txtInput small ime-disabled" style="width:160px;" /></td>'
+ '<td><img alt="删除" src="../images/icon_del.gif" class="operator" onclick="delVarTr(this);" /></td>'
+'</tr>'
return varHtml;
} //添加一行变量
function addVarTr() {
varHtml = createVarHtml();
$("#var_box").append(varHtml);
}
//删除一行变量
function delVarTr(obj) {
$(obj).parent().parent().remove();
} //赋值参考选项
function regChannelVal(obj, objName) {
var value = $(obj).children("option:selected").attr("value");
if (value != "") {
$(obj).next("input[name='" + objName + "']").val(value);
}
} //赋值表单
function setChannelDialog(obj) {
var pobj = $(obj).parent().parent();
var item_type = $(pobj).find("input[name='item_type']").val();
$("#pageType option").each(function (i) {
if ($(this).attr("value") == item_type) {
$(this).attr("selected", "selected");
}
});
$("#urlKey").val($(pobj).find("input[name='item_name']").val());
$("#urlExp").val($(pobj).find("input[name='item_path']").val());
$("#pageTemplet").val($(pobj).find("input[name='item_templet']").val().replace(".html", ""));
$("#urlPage").val($(pobj).find("input[name='item_page']").val().replace(".aspx", ""));
//分析正则表达式
var strPath = $(pobj).find("input[name='item_path']").val().replace(new RegExp("{\\d+}", "g"), "(.*)"); //替换成正则表达式
var strPattern = $(pobj).find("input[name='item_pattern']").val();
var pathArr = strPattern.match(strPath);
//开始赋值
if ($(pobj).find("input[name='item_querystring']").val() != "") {
var querystrArr = $(pobj).find("input[name='item_querystring']").val().split("^");
for (i = ; i < querystrArr.length; i++) {
//插入一行TR并赋值变量
var trObj = $("#var_box").append(createVarHtml());
var strArr = querystrArr[i].split("=");
$(trObj).children("tr").eq(i).find("input[name='varName']").val(strArr[]);
//赋值正则表达式
$(trObj).children("tr").eq(i).find("input[name='varExp']").val(pathArr[i + ]);
}
}
} //最终赋值结果
function setNavRow(obj) {
$(obj).find("input[name='item_type']").val($("#pageType").children("option:selected").attr("value"));
$(obj).find(".item_type").html($("#pageType").children("option:selected").html());
$(obj).find("input[name='item_name']").val($("#urlKey").val());
$(obj).find("input[name='item_path']").val($("#urlExp").val());
//查找变量表达式
var patternStr = $("#urlExp").val();
var querystringStr = "";
$("#var_box tr").each(function (i) {
if ($(this).find("input[name='varName']").val() != "" && $(this).find("input[name='varExp']").val() != "") {
patternStr = patternStr.replace("{" + i + "}", $(this).find("input[name='varExp']").val());
querystringStr += $(this).find("input[name='varName']").val() + "=$" + (i + );
if (i < $("#var_box tr").length - ) {
querystringStr += "^";
}
}
});
$(obj).find("input[name='item_pattern']").val(patternStr);
$(obj).find("input[name='item_querystring']").val(querystringStr);
$(obj).find("input[name='item_templet']").val($("#pageTemplet").val() + ".html");
$(obj).find("input[name='item_page']").val($("#urlPage").val() + ".aspx");
} //检查Dialog输入情况
function execChannelDialog(m, obj) {
var oldkey = "";
var objNum = arguments.length;
if (objNum > ) {
oldkey = $(obj).parent().parent().find("input[name='item_name']").val();
}
if ($("#pageType").children("option:selected").attr("value") == "") {
$.ligerDialog.warn('请选择频道类型!', function () {
$("#pageType").focus();
});
return false;
}
if ($("#urlKey").val() == "") {
$.ligerDialog.warn('请输入URL名称(Key)!', function () {
$("#urlKey").focus();
});
return false;
}
if ($("#urlExp").val() == "") {
$.ligerDialog.warn('请输入URL的重写表达式!', function () {
$("#urlExp").focus();
});
return false;
}
if ($("#pageTemplet").val() == "") {
$.ligerDialog.warn('请输入模板文件的名称!', function () {
$("#pageTemplet").focus();
});
return false;
}
if ($("#urlPage").val() == "") {
$.ligerDialog.warn('请输入生成ASPX文件的名称!', function () {
$("#urlPage").focus();
});
return false;
}
//检查本地是否重复
var checkKey = true;
$("#item_box tr").each(function (i) {
if ($("#urlKey").val() == $(this).find("input[name='item_name']").val() && $("#urlKey").val() != oldkey) {
checkKey = false;
}
});
if (!checkKey) {
$.ligerDialog.warn('对不起,URL名称(Key)已重复啦!', function(){
$("#urlKey").focus();
});
return false;
}
//AJAX验证
var oldItemKey = "";
if (objNum > ) {
if ($(obj).parent().parent().find("input[name='old_item_name']").length > ) {
oldItemKey = $(obj).parent().parent().find("input[name='old_item_name']").val();
}
}
$.ajax({
type: "post",
url: "../../tools/admin_ajax.ashx?action=sys_urlrewrite_validate",
data: {
rewritekey: function () {
return $("#urlKey").val();
},
oldkey: function () {
return oldItemKey;
}
},
dataType: "html",
success: function (data, textStatus) {
if (data == "true") {
if (objNum > ) {
setNavRow($(obj).parent().parent());
} else {
//创建TR
var navSize = $('#item_box tr').size();
$("#item_box").append(getTr());
initButton(navSize);
setNavRow($("#item_box tr").eq(navSize));
}
m.close();
} else {
$.ligerDialog.warn('对不起,AJAX检测URL名称(Key)已存在,若旧名称已更改,请保存后方可使用该名称!', function () {
$("#urlKey").focus();
});
return false;
}
}
});
}
</script>
</head>
<body class="mainbody">
<form id="form1" runat="server">
<div class="navigation"><a href="javascript:history.go(-1);" class="back">后退</a>首页 &gt; 控制面板 &gt; 系统频道</div>
<div id="navtips" class="navtips">
编辑频道信息需具备基本的正则表达式知识,注意URL配置的名称不要重复,以下正则表达式可供参考:<br />
约定参数:category_id为频道ID,page为分页页码;<br />
<a href="javascript:CloseTip('navtips');" class="close">关闭</a>
</div>
<div id="contentTab">
<ul class="tab_nav">
<li class="selected"><a onclick="tabs('#contentTab',0);" href="javascript:;">编辑频道信息</a></li>
</ul>
<div class="tab_con" style="display:block;">
<table class="form_table">
<col width="180px"><col>
<tbody>
<tr>
<th>频道名称:</th>
<td>
<asp:HiddenField ID="hidName" runat="server" Value="" />
<asp:TextBox ID="txtName" runat="server" CssClass="txtInput normal ime-disabled"></asp:TextBox><label>*只允许英文字母、下划线,不可重复</label></td>
</tr>
<tr>
<th>频道标题:</th>
<td><asp:TextBox ID="txtTitle" runat="server" CssClass="txtInput normal required" minlength="" maxlength=""></asp:TextBox><label>*</label></td>
</tr>
<tr>
<th>所属模型:</th>
<td><asp:DropDownList id="ddlModelId" CssClass="select2 required" runat="server"></asp:DropDownList><label>*更改模型请手动删除旧内容</label></td>
</tr>
<tr>
<th>排 序:</th>
<td><asp:TextBox ID="txtSortId" runat="server" CssClass="txtInput normal small required digits"></asp:TextBox><label>*</label></td>
</tr>
<tr>
<th>URL重写配置:</th>
<td><button id="itemAddButton" type="button" class="btnSelect"><span class="add">添 加</span></button></td>
</tr>
<tr>
<th></th>
<td>
<table border="" cellspacing="" cellpadding="" class="border_table" width="99%">
<thead>
<tr>
<th width="9%">类型</th>
<th width="15%">名称</th>
<th width="18%">URL重写</th>
<th width="18%">正则表达式</th>
<th width="18%">参数配置</th>
<th width="15%">模板文件</th>
<th width="5%">操作</th>
</tr>
</thead>
<tbody id="item_box">
<asp:Repeater ID="rptList" runat="server">
<ItemTemplate>
<tr class="td_c">
<td>
<input type="hidden" name="item_type" value="<%#Eval("type")%>" />
<input type="hidden" name="item_page" value="<%#Eval("page")%>" />
<span class="item_type"><%#GetPageTypeName(Eval("type").ToString())%></span>
</td>
<td><input type="hidden" name="old_item_name" value="<%#Eval("name")%>" /><input name="item_name" type="text" value="<%#Eval("name")%>" class="txtInput small" style="width:98%;" readonly="readonly" /></td>
<td><input name="item_path" type="text" value="<%#Eval("path")%>" class="txtInput small3" style="width:98%;" readonly="readonly" /></td>
<td><input name="item_pattern" type="text" value="<%#Eval("pattern")%>" class="txtInput small3" style="width:98%;" readonly="readonly" /></td>
<td><input name="item_querystring" type="text" value="<%#Eval("querystring")%>" class="txtInput small3" style="width:98%;" readonly="readonly" /></td>
<td><input name="item_templet" type="text" value="<%#Eval("templet")%>" class="txtInput small" style="width:98%;" readonly="readonly" /></td>
<td><img alt="编辑" src="../images/icon_edit.gif" class="operator" /><img alt="删除" src="../images/icon_del.gif" class="operator" /></td>
</tr>
</ItemTemplate>
</asp:Repeater>
</tbody>
</table>
</td>
</tr>
<tr>
<th></th>
<td><asp:Button ID="btnSubmit" runat="server" Text="提交保存" CssClass="btnSubmit" onclick="btnSubmit_Click" /></td>
</tr>
</tbody>
</table>
</div> </div>
</form>
</body>
</html>
05-11 22:54