internal Tk5DbEasySearch(BaseEasySearchConfig config) : base(MetaDataUtil.ConvertToTableScheme(config.CreateScheme()), config.IdField, config.NameField) { ContextName = config.Context; OrderBy = config.OrderBy; if (config.TopCount > 0) { TopCount = config.TopCount; } if (!string.IsNullOrEmpty(config.PyField)) { PinyinField = this[config.PyField]; } if (!string.IsNullOrEmpty(config.NameExpression)) { NameExpression = config.NameExpression; } if (!string.IsNullOrEmpty(config.DisplayNameExpression)) { DisplayNameExpression = config.DisplayNameExpression; } FilterSql = config.FilterSql; if (config.DataRight != null) { DataRight = config.DataRight.CreateObject(this); } SetActiveData(SourceScheme.Convert <Tk5DataXml>()); SearchMethod = SearchPlugInFactory.CreateSearch(config.SearchMethod, false); }
public bool Equals(SubFunctionKey other) { if (other == null) return false; return MetaDataUtil.Equals(Style, other.Style) && Source == other.Source; }
public bool UseCondition(IInputData input) { TkDebug.AssertArgumentNull(input, "input", this); if (Contains(ConditionUseType.True)) { return(true); } bool result = true; if (Contains(ConditionUseType.Post)) { result &= input.IsPost == IsPost; } if (Contains(ConditionUseType.Style)) { result &= Styles != null && Styles.Contains(PageStyleClass.FromStyle(input.Style)); } if (Contains(ConditionUseType.StyleStartsWith)) { result &= MetaDataUtil.StartsWith(input.Style, StartsWith); } if (Contains(ConditionUseType.QueryString) && QueryStrings != null) { foreach (var item in QueryStrings) { result &= input.QueryString[item.Name] == item.Value; } } return(result); }
public static IDbDataParameter[] CreateParameters(this DbParameterList paramList, TkDbContext context) { if (paramList == null || paramList.Count == 0) { return(new IDbDataParameter[0]); } TkDebug.AssertArgumentNull(context, "context", paramList); IDbDataParameter[] result = new IDbDataParameter[paramList.Count]; int i = 0; foreach (var item in paramList) { IDbDataParameter param = context.CreateParameter(item.DataType); param.ParameterName = context.GetParamName(item.FieldName); param.SourceColumn = item.FieldName; object fieldValue; if (item.FieldValue != null) { fieldValue = item.FieldValue.Value(MetaDataUtil.ConvertDataTypeToType(item.DataType)); } else { fieldValue = null; } param.Value = fieldValue; result[i++] = param; } return(result); }
private static IDisplay GetDisplay(Tk5FieldInfoEx field, IPageData pageData) { switch (pageData.Style.Style) { case PageStyle.Insert: case PageStyle.Update: return(field.Edit.Display.CreateObject()); case PageStyle.Detail: return(field.ListDetail.DetailDisplay.CreateObject()); case PageStyle.List: return(field.ListDetail.ListDisplay.CreateObject()); default: if (MetaDataUtil.StartsWith(pageData.Style, "DetailList")) { return(field.ListDetail.ListDisplay.CreateObject()); } TkDebug.ThrowToolkitException( string.Format(ObjectUtil.SysCulture, "当前页面类型是{0},没有可用的Display,请不要使用这种PageMaker", PageStyleClass.FromStyle(pageData.Style)), field); return(null); } }
public static OutputData CreateOutputData(IMetaData metaData, ISource source, IPageStyle style, IPageData inputData) { MetaDataUtil.SetMetaData(source, style, metaData); OutputData outputData = source.DoAction(inputData); return(outputData); }
public static Task WritePage(IMetaData metaData, ISource source, IPageMaker pageMaker, IWebHandler handler, OutputData outputData) { MetaDataUtil.SetMetaData(pageMaker, handler.Style, metaData); IContent content = pageMaker.WritePage(source, handler, outputData); return(WriteContent(handler.Request, handler.Response, content)); }
public static bool IsShowExcel(bool showSource, IPageData pageData) { TkDebug.ThrowIfNoAppSetting(); WebAppSetting setting = WebAppSetting.WebCurrent; return((pageData.Style.Style == PageStyle.List || MetaDataUtil.StartsWith(pageData.Style, "DetailList")) && showSource && setting.IsShowExcel(pageData.QueryString)); }
private ModuleOverridePageTemplateConfigItem FindOverrideItem(IPageData pageData) { if (fOverridePageTemplates == null) { return(null); } return((from item in fOverridePageTemplates where MetaDataUtil.Equals(item.Style, pageData.Style) select item).FirstOrDefault()); }
private static DataTable CreateDataTable(string tableName, List <Tk5FieldInfoEx> list) { DataTable table = new DataTable(tableName); foreach (IFieldInfo info in list) { table.Columns.Add(new DataColumn(info.DisplayName, MetaDataUtil.ConvertDataTypeToType(info.DataType))); } return(table); }
public static void RedirectPage(IMetaData metaData, ISource source, IWebHandler handler, OutputData outputData, IRedirector redirector) { MetaDataUtil.SetMetaData(redirector, handler.Style, metaData); string url = redirector.Redirect(source, handler, outputData); TkDebug.AssertNotNullOrEmpty(url, "Redirector.Redirect函数返回的Url为空,不能重定向该地址", redirector); url = AppUtil.ResolveUrl(url); handler.Response.Redirect(url, false); }
public TableResolver CreateObject(params object[] args) { IDbDataSource source = ObjectUtil.ConfirmQueryObject <IDbDataSource>(this, args); TkDbContext context = string.IsNullOrEmpty(Context) ? DbContextUtil.CreateDefault() : DbContextUtil.CreateDbContext(Context); using (context) { var scheme = DbUtil.CreateSqlTableScheme(Sql, TableName, KeyFields, context); var schemeEx = MetaDataUtil.ConvertToTableSchemeEx(scheme); return(new SqlTableResolver(Sql, schemeEx, source)); } }
public void OnReadObject() { if (string.IsNullOrEmpty(Value)) { return; } Type type = MetaDataUtil.ConvertDataTypeToType(DataType); if (type != typeof(byte[])) { FieldValue = ObjectUtil.GetValue(this, type, Value, null, ObjectUtil.ReadSettings); } }
public InternalFieldConfigItem(DataColumn column, string[] sortedKeyFields) { FieldName = DisplayName = column.ColumnName; NickName = StringUtil.GetNickName(FieldName); DataType = MetaDataUtil.ConvertTypeToDataType(column.DataType); IsAutoInc = column.AutoIncrement; if (sortedKeyFields.Length == 1) { IsKey = string.Compare(FieldName, sortedKeyFields[0], true, ObjectUtil.SysCulture) == 0; } else { IsKey = Array.BinarySearch(sortedKeyFields, FieldName, COMPARER) >= 0; } }
public override OutputData DoAction(IInputData input) { if (MetaDataUtil.StartsWith(input.Style, "DetailList")) { InputDataProxy proxy = new InputDataProxy(input, (PageStyleClass)PageStyle.List); DoListAction(proxy); input.CallerInfo.AddInfo(DataSet); return(OutputData.Create(DataSet)); } TkDebug.ThrowToolkitException(string.Format(ObjectUtil.SysCulture, "当前支持页面类型为CDetailList,当前类型是{0}", input.Style), this); return(null); }
/// <summary> /// 创建数据表 /// </summary> /// <param name="tableName">表名</param> /// <param name="fieldNames">字段序列</param> /// <returns>数据表</returns> public static DataTable CreateDataTable(string tableName, IEnumerable <IFieldInfo> fieldNames) { TkDebug.AssertArgumentNullOrEmpty(tableName, "tableName", null); TkDebug.AssertEnumerableArgumentNull(fieldNames, "fieldNames", null); DataTable table = new DataTable(tableName) { Locale = ObjectUtil.SysCulture }; foreach (IFieldInfo fieldName in fieldNames) { table.Columns.Add(new DataColumn(fieldName.NickName, MetaDataUtil.ConvertDataTypeToType(fieldName.DataType))); } return(table); }
private BaseWebPageConfigItem GetFitableConfig(IPageData pageData) { if (WebPage != null) { return(WebPage); } if (WebPages != null) { var result = (from item in WebPages where MetaDataUtil.Equals(item.Style, pageData.Style) select item).FirstOrDefault(); return(result); } return(null); }
public override IPageMaker CreatePageMaker(IPageData pageData) { if (MetaDataUtil.Equals(pageData.Style, (PageStyleClass)"Code")) { return(FACTORYMAKER.CreateFromXmlFactory <IPageMaker>( PageMakerConfigFactory.REG_NAME, pageData)); } else if (MetaDataUtil.Equals(pageData.Style, (PageStyleClass)"Xml")) { return(CONFIGMAKER.CreateFromXmlFactory <IPageMaker>( PageMakerConfigFactory.REG_NAME, pageData)); } else { return(PAGEMAKER.CreateFromXmlFactory <IPageMaker>( PageMakerConfigFactory.REG_NAME, pageData)); } }
protected override ISource CreateGetSource(PageStyle style, IInputData input) { switch (style) { case PageStyle.Insert: return(new MultipleDbInsertSource(this)); case PageStyle.Update: return(new MultipleDbDetailSource(this) { FillDetailData = true }); case PageStyle.Delete: return(new MultipleDbDeleteSource(this)); case PageStyle.Detail: return(new MultipleDbDetailSource(this) { FillDetailData = FillDetailData }); case PageStyle.List: return(new DbListSource(this)); case PageStyle.Custom: if (input.Style.Operation == DbListSource.TAB_STYLE_OPERATION) { return(new DbListSource(this)); } if (MetaDataUtil.StartsWith(input.Style, "DetailList")) { int index = input.QueryString["Index"].Value <int>(0); if (index < ChildTables.Count) { var child = ChildTables[index]; return(new DbDetailListSource(this, Resolver, child)); } } break; } return(null); }
protected void CheckFunctionRight() { ISupportFunction functionSource = Source as ISupportFunction; if (functionSource != null) { IFunctionRight functionRight = SessionGbl.AppRight.FunctionRight; switch (functionSource.FunctionType) { case FunctionRightType.Admin: if (!functionRight.IsAdmin()) { throw new NoFunctionRightException(); } break; case FunctionRightType.Function: if (!functionRight.IsFunction(functionSource.FunctionKey)) { throw new NoFunctionRightException(); } break; case FunctionRightType.SubFunction: if (Style.Style == PageStyle.List || Style.Style == PageStyle.Detail || MetaDataUtil.Equals(Style, DbListSource.TabStyle)) { // List和Detail不禁止子功能权限,子功能权限主要控制Insert,Update这些操作。如果想禁止查看数据,考虑使用DataRight过滤 break; } var subKey = GetSubFunctionKey(); if (!functionRight.IsSubFunction(subKey, functionSource.FunctionKey)) { throw new NoFunctionRightException(); } break; case FunctionRightType.None: break; } } }
public override OutputData DoAction(IInputData input) { if (input.Style.Style == PageStyle.List) { DoListAction(input); input.CallerInfo.AddInfo(DataSet); } else if (MetaDataUtil.Equals(input.Style, TabStyle)) { var result = DoTabCountAction(input); return(OutputData.CreateToolkitObject(result)); } else { TkDebug.ThrowToolkitException(string.Format(ObjectUtil.SysCulture, "当前支持页面类型为List,当前类型是{0}", input.Style), this); } return(OutputData.Create(DataSet)); }
public OutputData DoAction(IInputData input) { TkDebug.ThrowIfNoGlobalVariable(); if (MetaDataUtil.Equals(input.Style, (PageStyleClass)"Code")) { string factoryName = input.QueryString["Name"]; var factory = BaseGlobalVariable.Current.FactoryManager.GetCodeFactory(factoryName); return(OutputData.CreateToolkitObject(new PlugInFactoryData(factory))); } else if (MetaDataUtil.Equals(input.Style, (PageStyleClass)"Xml")) { string factoryName = input.QueryString["Name"]; var factory = BaseGlobalVariable.Current.FactoryManager.GetConfigFactory(factoryName); return(OutputData.CreateToolkitObject(new ConfigFactoryData(factory))); } else { return(OutputData.CreateToolkitObject(new PlugInManagerData())); } }
protected override void PrepareWritePage(IPageMaker pageMaker, ISource source, IPageData pageData, OutputData outputData) { base.PrepareWritePage(pageMaker, source, pageData, outputData); fModuleTemplate.SetPageMaker(source, pageData, outputData, pageMaker); RazorPageTemplatePageMaker templateMaker = pageMaker as RazorPageTemplatePageMaker; if (templateMaker != null) { var overrideItem = FindOverrideItem(pageData); templateMaker.SetConfig(overrideItem); return; } PostPageMaker postMaker = pageMaker as PostPageMaker; if (postMaker != null) { if (fOverridePostPageMakers == null) { return; } var overrideItem = (from item in fOverridePostPageMakers where MetaDataUtil.Equals(item.Style, pageData.Style) select item).FirstOrDefault(); if (overrideItem != null) { postMaker.SetProperties(overrideItem.DataType, overrideItem.DestUrl, overrideItem.CustomUrl); postMaker.UseRetUrlFirst = overrideItem.UseRetUrlFirst; if (overrideItem.AlertMessage != null) { postMaker.AlertMessage = overrideItem.AlertMessage.ToString(); } } } }
/// <summary> /// 建构函数,设置附着的Xml文件。 /// </summary> /// <param name="context">数据库连接上下文</param> /// <param name="source">附着的数据源</param> public UserResolver(IDbDataSource source) : base(MetaDataUtil.CreateTableScheme("WeUser.xml"), source) { }
public SingleDetailListModuleTemplate() : base("Edit", "MultiDetail", "List") { AddPageTemplate(new PageTemplateInfo((source, input, output) => MetaDataUtil.StartsWith(input.Style, "DetailList"), "DetailList")); }
/// <summary> /// 建构函数,设置附着的Xml文件。 /// </summary> /// <param name="context">数据库连接上下文</param> /// <param name="source">附着的数据源</param> public UserLocationResolver(IDbDataSource source) : base(MetaDataUtil.CreateTableScheme("UserLocation.xml"), source) { }
public bool CanUseMetaData(IPageStyle style) { return(MetaDataUtil.Equals(style, (PageStyleClass)PageStyle.Insert)); }
public CorpAppLogResolver(IDbDataSource source) : base(MetaDataUtil.CreateTableScheme("CorpAppLog.xml"), source) { AutoUpdateKey = true; }
public override bool CanUseMetaData(IPageStyle style) { return(MetaDataUtil.Equals(style, (PageStyleClass)ImportConst.TEMPLATE)); }
public CacheDataResolver(IDbDataSource source) : base(MetaDataUtil.CreateTableScheme("CacheData.xml"), source) { }