//保存扩展属性 private void SaveExts(Base_Catalog cat, NameValueCollection form) { cat.Exts.Clear(); var ids = form["ExtId"].Split(','); var names = form["ExtName"].Split(','); var defaultValues = form["DefaultValue"].Split(','); var dataTypes = form["DataType"].Split(','); var maxLengths = form["MaxLength"].Split(','); //var allownulls = form["AllowNull"].Split(','); var states = form["ExtState"].Split(','); var dataSourceTypes = form["DataSourceType"].Split(','); var dataSources = form["DataSource"].Split(','); for (int i = 1; i < names.Length; i++) { if (!string.IsNullOrEmpty(names[i])) { Base_CatalogExt ext = new Base_CatalogExt { Id = CommOp.ToInt(ids[i]), CatalogId = cat.Id, Name = names[i], DefaultValue = defaultValues[i], DataType = CommOp.ToEnum <ExtDataType>(dataTypes[i]), State = states[i] == "" ? ArticleState.Published : CommOp.ToInt(states[i]), Ord = i, //AllowNull = CommOp.ToBool(allownulls[i] == "on" ? true : false), MaxLength = CommOp.ToInt(maxLengths[i]), DataSourceType = CommOp.ToEnum <ExtDataSourceType>(dataSourceTypes[i]), DataSource = dataSources[i] }; cat.Exts.Add(ext); } } }
/// <summary> /// 根据sql语句返回下拉列表所需数据 /// </summary> /// <param name="catExt"></param> /// <returns></returns> public static IEnumerable <SelectListItem> GetSqlList(this Base_CatalogExt catExt) { string sql = catExt.DataSource; var dbHelper = SiteManager.Get <DBHelper>(); List <IDataParameter> ps = new List <IDataParameter>(); if (sql.Contains("@UserId")) { ps.Add(dbHelper.CreateParameter("@UserId", AppManager.Instance.GetCurrentUserId())); } DataTable dt = dbHelper.ExecDataTable(sql, ps.ToArray()); int valIndex = dt.Columns.Count > 0 ? 1 : 0; var items = dt.Rows.Cast <DataRow>() .Select(dr => new SelectListItem { Text = CommOp.ToStr(dr[0]), Value = CommOp.ToStr(dr[valIndex]) }); return(items); }
/// <summary> /// 根据栏目扩展属性生成下拉列表项 /// </summary> /// <param name="catExt"></param> /// <returns></returns> public static IEnumerable <SelectListItem> GetSelectList(this Base_CatalogExt catExt) { var datas = catExt.DataSource.Split(';').ToList(); var items = datas.Select(d => { var txts = d.Split('='); var txt = txts[0]; var val = txt; if (txts.Length > 1) { val = txts[1]; } return(new SelectListItem { Text = txt, Value = val }); }); return(items); }