From 56d8fbcc986d26ec9592085ed5f222a9ef701c54 Mon Sep 17 00:00:00 2001
From: lu <99954486@qq.com>
Date: 星期二, 22 十月 2024 12:27:32 +0800
Subject: [PATCH] 1

---
 DevApp/Gs.DevApp/bin/Debug/FastReport.dll                                |    0 
 DevApp/Gs.DevApp/bin/Debug/AutoUpdater.NET.xml                           |  748 ++++++++++++++++++++
 DevApp/Gs.DevApp/bin/Debug/templeEasyCode/category2/category.resx        |  120 +++
 DevApp/Gs.DevApp/bin/Debug/templeEasyCode/report/RptDemo.frx             |   57 +
 DevApp/Gs.DevApp/bin/Debug/templeEasyCode/category2/category.cs          |  297 ++++++++
 DevApp/Gs.DevApp/bin/Debug/templeEasyCode/category1/category.resx        |  120 +++
 DevApp/Gs.DevApp/bin/Debug/AutoUpdater.NET.pdb                           |    0 
 DevApp/Gs.DevApp/bin/Debug/FastReport.Editor.dll                         |    0 
 DevApp/Gs.DevApp/bin/Debug/templeEasyCode/category2/category.Designer.cs |  222 ++++++
 DevApp/Gs.DevApp/bin/Debug/templeEasyCode/category1/category.cs          |  280 +++++++
 DevApp/Gs.DevApp/bin/Debug/AutoUpdater.NET.dll                           |    0 
 DevApp/Gs.DevApp/bin/Debug/templeEasyCode/report/Dictionary.frd          |   69 +
 DevApp/Gs.DevApp/bin/Debug/FastReport.Bars.dll                           |    0 
 DevApp/Gs.DevApp/bin/Debug/templeEasyCode/category1/category.Designer.cs |  190 +++++
 14 files changed, 2,103 insertions(+), 0 deletions(-)

diff --git a/DevApp/Gs.DevApp/bin/Debug/AutoUpdater.NET.dll b/DevApp/Gs.DevApp/bin/Debug/AutoUpdater.NET.dll
new file mode 100644
index 0000000..9c751c3
--- /dev/null
+++ b/DevApp/Gs.DevApp/bin/Debug/AutoUpdater.NET.dll
Binary files differ
diff --git a/DevApp/Gs.DevApp/bin/Debug/AutoUpdater.NET.pdb b/DevApp/Gs.DevApp/bin/Debug/AutoUpdater.NET.pdb
new file mode 100644
index 0000000..a215f7b
--- /dev/null
+++ b/DevApp/Gs.DevApp/bin/Debug/AutoUpdater.NET.pdb
Binary files differ
diff --git a/DevApp/Gs.DevApp/bin/Debug/AutoUpdater.NET.xml b/DevApp/Gs.DevApp/bin/Debug/AutoUpdater.NET.xml
new file mode 100644
index 0000000..8b3d8fc
--- /dev/null
+++ b/DevApp/Gs.DevApp/bin/Debug/AutoUpdater.NET.xml
@@ -0,0 +1,748 @@
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>AutoUpdater.NET</name>
+    </assembly>
+    <members>
+        <member name="T:AutoUpdaterDotNET.RemindLaterFormat">
+            <summary>
+                Enum representing the remind later time span.
+            </summary>
+        </member>
+        <member name="F:AutoUpdaterDotNET.RemindLaterFormat.Minutes">
+            <summary>
+                Represents the time span in minutes.
+            </summary>
+        </member>
+        <member name="F:AutoUpdaterDotNET.RemindLaterFormat.Hours">
+            <summary>
+                Represents the time span in hours.
+            </summary>
+        </member>
+        <member name="F:AutoUpdaterDotNET.RemindLaterFormat.Days">
+            <summary>
+                Represents the time span in days.
+            </summary>
+        </member>
+        <member name="T:AutoUpdaterDotNET.Mode">
+            <summary>
+                Enum representing the effect of Mandatory flag.
+            </summary>
+        </member>
+        <member name="F:AutoUpdaterDotNET.Mode.Normal">
+            <summary>
+                In this mode, it ignores Remind Later and Skip values set previously and hide both buttons.
+            </summary>
+        </member>
+        <member name="F:AutoUpdaterDotNET.Mode.Forced">
+            <summary>
+                In this mode, it won't show close button in addition to Normal mode behaviour.
+            </summary>
+        </member>
+        <member name="F:AutoUpdaterDotNET.Mode.ForcedDownload">
+            <summary>
+                In this mode, it will start downloading and applying update without showing standard update dialog in addition to
+                Forced mode behaviour.
+            </summary>
+        </member>
+        <member name="T:AutoUpdaterDotNET.AutoUpdater">
+            <summary>
+                Main class that lets you auto update applications by setting some static fields and executing its Start method.
+            </summary>
+        </member>
+        <member name="T:AutoUpdaterDotNET.AutoUpdater.ApplicationExitEventHandler">
+            <summary>
+                A delegate type to handle how to exit the application after update is downloaded.
+            </summary>
+        </member>
+        <member name="T:AutoUpdaterDotNET.AutoUpdater.CheckForUpdateEventHandler">
+            <summary>
+                A delegate type for hooking up update notifications.
+            </summary>
+            <param name="args">
+                An object containing all the parameters received from AppCast XML file. If there will be an error
+                while looking for the XML file then this object will be null.
+            </param>
+        </member>
+        <member name="T:AutoUpdaterDotNET.AutoUpdater.ParseUpdateInfoHandler">
+            <summary>
+                A delegate type for hooking up parsing logic.
+            </summary>
+            <param name="args">An object containing the AppCast file received from server.</param>
+        </member>
+        <member name="F:AutoUpdaterDotNET.AutoUpdater.AppCastURL">
+            <summary>
+                URL of the xml file that contains information about latest version of the application.
+            </summary>
+        </member>
+        <member name="F:AutoUpdaterDotNET.AutoUpdater.AppTitle">
+            <summary>
+                Set the Application Title shown in Update dialog. Although AutoUpdater.NET will get it automatically, you can set
+                this property if you like to give custom Title.
+            </summary>
+        </member>
+        <member name="F:AutoUpdaterDotNET.AutoUpdater.BasicAuthChangeLog">
+            <summary>
+                Set Basic Authentication credentials to navigate to the change log URL.
+            </summary>
+        </member>
+        <member name="F:AutoUpdaterDotNET.AutoUpdater.BasicAuthDownload">
+            <summary>
+                Set Basic Authentication credentials required to download the file.
+            </summary>
+        </member>
+        <member name="F:AutoUpdaterDotNET.AutoUpdater.BasicAuthXML">
+            <summary>
+                Set Basic Authentication credentials required to download the XML file.
+            </summary>
+        </member>
+        <member name="F:AutoUpdaterDotNET.AutoUpdater.ClearAppDirectory">
+            <summary>
+                Set this to true if you want to clear application directory before extracting update.
+            </summary>
+        </member>
+        <member name="F:AutoUpdaterDotNET.AutoUpdater.DownloadPath">
+            <summary>
+                Set it to folder path where you want to download the update file. If not provided then it defaults to Temp folder.
+            </summary>
+        </member>
+        <member name="F:AutoUpdaterDotNET.AutoUpdater.ExecutablePath">
+            <summary>
+                If you are using a zip file as an update file, then you can set this value to a new executable path relative to the
+                installation directory.
+            </summary>
+        </member>
+        <member name="F:AutoUpdaterDotNET.AutoUpdater.FtpCredentials">
+            <summary>
+                Login/password/domain for FTP-request
+            </summary>
+        </member>
+        <member name="F:AutoUpdaterDotNET.AutoUpdater.HttpUserAgent">
+            <summary>
+                Set the User-Agent string to be used for HTTP web requests.
+            </summary>
+        </member>
+        <member name="F:AutoUpdaterDotNET.AutoUpdater.Icon">
+            <summary>
+                Set this to change the icon shown on updater dialog.
+            </summary>
+        </member>
+        <member name="F:AutoUpdaterDotNET.AutoUpdater.InstallationPath">
+            <summary>
+                If you are using a zip file as an update file then you can set this value to path where your app is installed. This
+                is only necessary when your installation directory differs from your executable path.
+            </summary>
+        </member>
+        <member name="F:AutoUpdaterDotNET.AutoUpdater.InstalledVersion">
+            <summary>
+                You can set this field to your current version if you don't want to determine the version from the assembly.
+            </summary>
+        </member>
+        <member name="F:AutoUpdaterDotNET.AutoUpdater.LetUserSelectRemindLater">
+            <summary>
+                If this is true users see dialog where they can set remind later interval otherwise it will take the interval from
+                RemindLaterAt and RemindLaterTimeSpan fields.
+            </summary>
+        </member>
+        <member name="F:AutoUpdaterDotNET.AutoUpdater.Mandatory">
+            <summary>
+                Set this to true if you want to ignore previously assigned Remind Later and Skip settings. It will also hide Remind
+                Later and Skip buttons.
+            </summary>
+        </member>
+        <member name="F:AutoUpdaterDotNET.AutoUpdater.OpenDownloadPage">
+            <summary>
+                Opens the download URL in default browser if true. Very useful if you have portable application.
+            </summary>
+        </member>
+        <member name="F:AutoUpdaterDotNET.AutoUpdater.PersistenceProvider">
+            <summary>
+                Set this to an instance implementing the IPersistenceProvider interface for using a data storage method different
+                from the default Windows Registry based one.
+            </summary>
+        </member>
+        <member name="F:AutoUpdaterDotNET.AutoUpdater.Proxy">
+            <summary>
+                Set Proxy server to use for all the web requests in AutoUpdater.NET.
+            </summary>
+        </member>
+        <member name="F:AutoUpdaterDotNET.AutoUpdater.RemindLaterAt">
+            <summary>
+                Remind Later interval after user should be reminded of update.
+            </summary>
+        </member>
+        <member name="F:AutoUpdaterDotNET.AutoUpdater.RemindLaterTimeSpan">
+            <summary>
+                Set if RemindLaterAt interval should be in Minutes, Hours or Days.
+            </summary>
+        </member>
+        <member name="F:AutoUpdaterDotNET.AutoUpdater.ReportErrors">
+            <summary>
+                AutoUpdater.NET will report errors if this is true.
+            </summary>
+        </member>
+        <member name="F:AutoUpdaterDotNET.AutoUpdater.RunUpdateAsAdmin">
+            <summary>
+                Set this to false if your application doesn't need administrator privileges to replace the old version.
+            </summary>
+        </member>
+        <member name="F:AutoUpdaterDotNET.AutoUpdater.ShowRemindLaterButton">
+            <summary>
+                If this is true users can see the Remind Later button.
+            </summary>
+        </member>
+        <member name="F:AutoUpdaterDotNET.AutoUpdater.ShowSkipButton">
+            <summary>
+                If this is true users can see the skip button.
+            </summary>
+        </member>
+        <member name="F:AutoUpdaterDotNET.AutoUpdater.Synchronous">
+            <summary>
+                Set this to true if you want to run update check synchronously.
+            </summary>
+        </member>
+        <member name="F:AutoUpdaterDotNET.AutoUpdater.TopMost">
+            <summary>
+                Modify TopMost property of all dialogs.
+            </summary>
+        </member>
+        <member name="F:AutoUpdaterDotNET.AutoUpdater.UpdateFormSize">
+            <summary>
+                Set this if you want the default update form to have a different size.
+            </summary>
+        </member>
+        <member name="F:AutoUpdaterDotNET.AutoUpdater.UpdateMode">
+            <summary>
+                Set this to any of the available modes to change behaviour of the Mandatory flag.
+            </summary>
+        </member>
+        <member name="E:AutoUpdaterDotNET.AutoUpdater.ApplicationExitEvent">
+            <summary>
+                An event that developers can use to exit the application gracefully.
+            </summary>
+        </member>
+        <member name="E:AutoUpdaterDotNET.AutoUpdater.CheckForUpdateEvent">
+            <summary>
+                An event that clients can use to be notified whenever the update is checked.
+            </summary>
+        </member>
+        <member name="E:AutoUpdaterDotNET.AutoUpdater.ParseUpdateInfoEvent">
+            <summary>
+                An event that clients can use to be notified whenever the AppCast file needs parsing.
+            </summary>
+        </member>
+        <member name="M:AutoUpdaterDotNET.AutoUpdater.SetOwner(System.Object)">
+            <summary>
+                Set the owner for all dialogs.
+            </summary>
+            <param name="obj">WPF Window or Windows Form object to be used as owner for all dialogs.</param>
+        </member>
+        <member name="M:AutoUpdaterDotNET.AutoUpdater.Start(System.Reflection.Assembly)">
+            <summary>
+                Start checking for new version of application and display a dialog to the user if update is available.
+            </summary>
+            <param name="myAssembly">Assembly to use for version checking.</param>
+        </member>
+        <member name="M:AutoUpdaterDotNET.AutoUpdater.Start(System.String,System.Net.NetworkCredential,System.Reflection.Assembly)">
+            <summary>
+                Start checking for new version of application via FTP and display a dialog to the user if update is available.
+            </summary>
+            <param name="appCast">FTP URL of the xml file that contains information about latest version of the application.</param>
+            <param name="ftpCredentials">Credentials required to connect to FTP server.</param>
+            <param name="myAssembly">Assembly to use for version checking.</param>
+        </member>
+        <member name="M:AutoUpdaterDotNET.AutoUpdater.Start(System.String,System.Reflection.Assembly)">
+            <summary>
+                Start checking for new version of application and display a dialog to the user if update is available.
+            </summary>
+            <param name="appCast">URL of the xml file that contains information about latest version of the application.</param>
+            <param name="myAssembly">Assembly to use for version checking.</param>
+        </member>
+        <member name="M:AutoUpdaterDotNET.AutoUpdater.Exit">
+            <summary>
+                Detects and exits all instances of running assembly, including current.
+            </summary>
+        </member>
+        <member name="M:AutoUpdaterDotNET.AutoUpdater.DownloadUpdate(AutoUpdaterDotNET.UpdateInfoEventArgs)">
+            <summary>
+                Opens the Download window that download the update and execute the installer when download completes.
+            </summary>
+        </member>
+        <member name="M:AutoUpdaterDotNET.AutoUpdater.ShowUpdateForm(AutoUpdaterDotNET.UpdateInfoEventArgs)">
+            <summary>
+                Shows standard update dialog.
+            </summary>
+        </member>
+        <member name="T:AutoUpdaterDotNET.BasicAuthentication">
+            <summary>
+                Provides Basic Authentication header for web request.
+            </summary>
+        </member>
+        <member name="M:AutoUpdaterDotNET.BasicAuthentication.#ctor(System.String,System.String)">
+            <summary>
+                Initializes credentials for Basic Authentication.
+            </summary>
+            <param name="username">Username to use for Basic Authentication</param>
+            <param name="password">Password to use for Basic Authentication</param>
+        </member>
+        <member name="M:AutoUpdaterDotNET.BasicAuthentication.Apply(AutoUpdaterDotNET.MyWebClient@)">
+            <inheritdoc />
+        </member>
+        <member name="M:AutoUpdaterDotNET.BasicAuthentication.ToString">
+            <inheritdoc />
+        </member>
+        <member name="T:AutoUpdaterDotNET.CustomAuthentication">
+            <summary>
+                Provides Custom Authentication header for web request.
+            </summary>
+        </member>
+        <member name="M:AutoUpdaterDotNET.CustomAuthentication.#ctor(System.String)">
+            <summary>
+                Initializes authorization header value for Custom Authentication
+            </summary>
+            <param name="httpRequestHeaderAuthorizationValue">Value to use as http request header authorization value</param>
+        </member>
+        <member name="M:AutoUpdaterDotNET.CustomAuthentication.Apply(AutoUpdaterDotNET.MyWebClient@)">
+            <inheritdoc />
+        </member>
+        <member name="M:AutoUpdaterDotNET.CustomAuthentication.ToString">
+            <inheritdoc />
+        </member>
+        <member name="F:AutoUpdaterDotNET.DownloadUpdateDialog.components">
+            <summary>
+            Required designer variable.
+            </summary>
+        </member>
+        <member name="M:AutoUpdaterDotNET.DownloadUpdateDialog.Dispose(System.Boolean)">
+            <summary>
+            Clean up any resources being used.
+            </summary>
+            <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        </member>
+        <member name="M:AutoUpdaterDotNET.DownloadUpdateDialog.InitializeComponent">
+            <summary>
+            Required method for Designer support - do not modify
+            the contents of this method with the code editor.
+            </summary>
+        </member>
+        <member name="T:AutoUpdaterDotNET.IAuthentication">
+            <summary>
+                Interface for authentication
+            </summary>
+        </member>
+        <member name="M:AutoUpdaterDotNET.IAuthentication.Apply(AutoUpdaterDotNET.MyWebClient@)">
+            <summary>
+                Apply the authentication to webclient.
+            </summary>
+            <param name="webClient">WebClient for which you want to use this authentication method.</param>
+        </member>
+        <member name="T:AutoUpdaterDotNET.IPersistenceProvider">
+            <summary>
+                Provides a mechanism for storing AutoUpdater state between sessions.
+            </summary>
+        </member>
+        <member name="M:AutoUpdaterDotNET.IPersistenceProvider.GetSkippedVersion">
+            <summary>
+                Reads the flag indicating whether a specific version should be skipped or not.
+            </summary>
+            <returns>Returns a version to skip. If skip value is false or not present then it will return null.</returns>
+        </member>
+        <member name="M:AutoUpdaterDotNET.IPersistenceProvider.GetRemindLater">
+            <summary>
+                Reads the value containing the date and time at which the user must be given again the possibility to upgrade the
+                application.
+            </summary>
+            <returns>
+                Returns a DateTime value at which the user must be given again the possibility to upgrade the application. If
+                remind later value is not present then it will return null.
+            </returns>
+        </member>
+        <member name="M:AutoUpdaterDotNET.IPersistenceProvider.SetSkippedVersion(System.Version)">
+            <summary>
+                Sets the values indicating the specific version that must be ignored by AutoUpdater.
+            </summary>
+            <param name="version">
+                Version code for the specific version that must be ignored. Set it to null if you don't want to
+                skip any version.
+            </param>
+        </member>
+        <member name="M:AutoUpdaterDotNET.IPersistenceProvider.SetRemindLater(System.Nullable{System.DateTime})">
+            <summary>
+                Sets the date and time at which the user must be given again the possibility to upgrade the application.
+            </summary>
+            <param name="remindLaterAt">
+                Date and time at which the user must be given again the possibility to upgrade the
+                application.
+            </param>
+        </member>
+        <member name="T:AutoUpdaterDotNET.JsonFilePersistenceProvider">
+            <summary>
+                Provides a mechanism for storing AutoUpdater state between sessions on a Json formatted file.
+            </summary>
+        </member>
+        <member name="M:AutoUpdaterDotNET.JsonFilePersistenceProvider.#ctor(System.String)">
+            <summary>
+                Initializes a new instance of the JsonFilePersistenceProvider class.
+            </summary>
+            <remarks>The path for the Json formatted file must be specified using the FileName property.</remarks>
+        </member>
+        <member name="P:AutoUpdaterDotNET.JsonFilePersistenceProvider.FileName">
+            <summary>
+                Path for the Json formatted file.
+            </summary>
+        </member>
+        <member name="P:AutoUpdaterDotNET.JsonFilePersistenceProvider.PersistedValues">
+            <summary>
+            </summary>
+        </member>
+        <member name="M:AutoUpdaterDotNET.JsonFilePersistenceProvider.GetSkippedVersion">
+            <inheritdoc />
+        </member>
+        <member name="M:AutoUpdaterDotNET.JsonFilePersistenceProvider.GetRemindLater">
+            <inheritdoc />
+        </member>
+        <member name="M:AutoUpdaterDotNET.JsonFilePersistenceProvider.SetSkippedVersion(System.Version)">
+            <inheritdoc />
+        </member>
+        <member name="M:AutoUpdaterDotNET.JsonFilePersistenceProvider.SetRemindLater(System.Nullable{System.DateTime})">
+            <inheritdoc />
+        </member>
+        <member name="M:AutoUpdaterDotNET.JsonFilePersistenceProvider.Save">
+            <summary>
+                Stores applied modifications into the Json formatted file specified in the FileName property.
+            </summary>
+        </member>
+        <member name="M:AutoUpdaterDotNET.JsonFilePersistenceProvider.ReadFile">
+            <summary>
+                Reads a Json formatted file and returns an initialized instance of the class PersistedValues.
+            </summary>
+            <remarks>The function creates a new instance, initialized with default parameters, in case the file does not exist.</remarks>
+        </member>
+        <member name="T:AutoUpdaterDotNET.PersistedValues">
+            <summary>
+                Provides way to serialize and deserialize AutoUpdater persisted values.
+            </summary>
+        </member>
+        <member name="P:AutoUpdaterDotNET.PersistedValues.SkippedVersion">
+            <summary>
+                Application version to be skipped.
+            </summary>
+            <remarks>The SetSkippedVersion function sets this property and calls the Save() method for making changes permanent.</remarks>
+        </member>
+        <member name="P:AutoUpdaterDotNET.PersistedValues.RemindLaterAt">
+            <summary>
+                Date and time at which the user must be given again the possibility to upgrade the application.
+            </summary>
+        </member>
+        <member name="T:AutoUpdaterDotNET.MyWebClient">
+            <inheritdoc />
+        </member>
+        <member name="F:AutoUpdaterDotNET.MyWebClient.ResponseUri">
+            <summary>
+                Response Uri after any redirects.
+            </summary>
+        </member>
+        <member name="M:AutoUpdaterDotNET.MyWebClient.GetWebResponse(System.Net.WebRequest,System.IAsyncResult)">
+            <inheritdoc />
+        </member>
+        <member name="T:AutoUpdaterDotNET.NetworkAuthentication">
+            <summary>
+                Provides credentials for Network Authentication.
+            </summary>
+        </member>
+        <member name="M:AutoUpdaterDotNET.NetworkAuthentication.#ctor(System.String,System.String)">
+            <summary>
+                Initializes credentials for Network Authentication.
+            </summary>
+            <param name="username">Username to use for Network Authentication</param>
+            <param name="password">Password to use for Network Authentication</param>
+        </member>
+        <member name="M:AutoUpdaterDotNET.NetworkAuthentication.Apply(AutoUpdaterDotNET.MyWebClient@)">
+            <inheritdoc />
+        </member>
+        <member name="T:AutoUpdaterDotNET.ParseUpdateInfoEventArgs">
+            <summary>
+                An object of this class contains the AppCast file received from server.
+            </summary>
+        </member>
+        <member name="M:AutoUpdaterDotNET.ParseUpdateInfoEventArgs.#ctor(System.String)">
+            <summary>
+                An object containing the AppCast file received from server.
+            </summary>
+            <param name="remoteData">A string containing remote data received from the AppCast file.</param>
+        </member>
+        <member name="P:AutoUpdaterDotNET.ParseUpdateInfoEventArgs.RemoteData">
+            <summary>
+                Remote data received from the AppCast file.
+            </summary>
+        </member>
+        <member name="P:AutoUpdaterDotNET.ParseUpdateInfoEventArgs.UpdateInfo">
+            <summary>
+                Set this object with values received from the AppCast file.
+            </summary>
+        </member>
+        <member name="T:AutoUpdaterDotNET.Properties.Resources">
+            <summary>
+              A strongly-typed resource class, for looking up localized strings, etc.
+            </summary>
+        </member>
+        <member name="P:AutoUpdaterDotNET.Properties.Resources.ResourceManager">
+            <summary>
+              Returns the cached ResourceManager instance used by this class.
+            </summary>
+        </member>
+        <member name="P:AutoUpdaterDotNET.Properties.Resources.Culture">
+            <summary>
+              Overrides the current thread's CurrentUICulture property for all
+              resource lookups using this strongly typed resource class.
+            </summary>
+        </member>
+        <member name="P:AutoUpdaterDotNET.Properties.Resources.clock_go">
+            <summary>
+              Looks up a localized resource of type System.Drawing.Bitmap.
+            </summary>
+        </member>
+        <member name="P:AutoUpdaterDotNET.Properties.Resources.clock_go_32">
+            <summary>
+              Looks up a localized resource of type System.Drawing.Bitmap.
+            </summary>
+        </member>
+        <member name="P:AutoUpdaterDotNET.Properties.Resources.clock_play">
+            <summary>
+              Looks up a localized resource of type System.Drawing.Bitmap.
+            </summary>
+        </member>
+        <member name="P:AutoUpdaterDotNET.Properties.Resources.download">
+            <summary>
+              Looks up a localized resource of type System.Drawing.Bitmap.
+            </summary>
+        </member>
+        <member name="P:AutoUpdaterDotNET.Properties.Resources.download_32">
+            <summary>
+              Looks up a localized resource of type System.Drawing.Bitmap.
+            </summary>
+        </member>
+        <member name="P:AutoUpdaterDotNET.Properties.Resources.DownloadSpeedMessage">
+            <summary>
+              Looks up a localized string similar to Downloading at {0}/s.
+            </summary>
+        </member>
+        <member name="P:AutoUpdaterDotNET.Properties.Resources.FileIntegrityCheckFailedCaption">
+            <summary>
+              Looks up a localized string similar to Checksum differs.
+            </summary>
+        </member>
+        <member name="P:AutoUpdaterDotNET.Properties.Resources.FileIntegrityCheckFailedMessage">
+            <summary>
+              Looks up a localized string similar to File integrity check failed and reported some errors..
+            </summary>
+        </member>
+        <member name="P:AutoUpdaterDotNET.Properties.Resources.hand_point">
+            <summary>
+              Looks up a localized resource of type System.Drawing.Bitmap.
+            </summary>
+        </member>
+        <member name="P:AutoUpdaterDotNET.Properties.Resources.HashAlgorithmNotSupportedCaption">
+            <summary>
+              Looks up a localized string similar to Unsupported Hash Algorithm.
+            </summary>
+        </member>
+        <member name="P:AutoUpdaterDotNET.Properties.Resources.HashAlgorithmNotSupportedMessage">
+            <summary>
+              Looks up a localized string similar to Hash algorithm provided in the XML file is not supported..
+            </summary>
+        </member>
+        <member name="P:AutoUpdaterDotNET.Properties.Resources.update">
+            <summary>
+              Looks up a localized resource of type System.Drawing.Bitmap.
+            </summary>
+        </member>
+        <member name="P:AutoUpdaterDotNET.Properties.Resources.UnableToDetermineFilenameMessage">
+            <summary>
+              Looks up a localized string similar to Unable to determine the filename of the update file!.
+            </summary>
+        </member>
+        <member name="P:AutoUpdaterDotNET.Properties.Resources.UpdateCheckFailedCaption">
+            <summary>
+              Looks up a localized string similar to Update Check Failed.
+            </summary>
+        </member>
+        <member name="P:AutoUpdaterDotNET.Properties.Resources.UpdateCheckFailedMessage">
+            <summary>
+              Looks up a localized string similar to There is a problem reaching update server. Please check your internet connection and try again later..
+            </summary>
+        </member>
+        <member name="P:AutoUpdaterDotNET.Properties.Resources.UpdateUnavailableCaption">
+            <summary>
+              Looks up a localized string similar to Update Unavailable.
+            </summary>
+        </member>
+        <member name="P:AutoUpdaterDotNET.Properties.Resources.UpdateUnavailableMessage">
+            <summary>
+              Looks up a localized string similar to There is no update available. Please try again later..
+            </summary>
+        </member>
+        <member name="P:AutoUpdaterDotNET.Properties.Resources.ZipExtractor">
+            <summary>
+              Looks up a localized resource of type System.Byte[].
+            </summary>
+        </member>
+        <member name="T:AutoUpdaterDotNET.RegistryPersistenceProvider">
+            <summary>
+                Provides a mechanism for storing AutoUpdater state between sessions based on storing data on the Windows Registry.
+            </summary>
+        </member>
+        <member name="M:AutoUpdaterDotNET.RegistryPersistenceProvider.#ctor(System.String)">
+            <summary>
+                Initializes a new instance of the RegistryPersistenceProvider class indicating the path for the Windows registry
+                key to use for storing the data.
+            </summary>
+            <param name="registryLocation"></param>
+        </member>
+        <member name="P:AutoUpdaterDotNET.RegistryPersistenceProvider.RegistryLocation">
+            <summary>
+                Gets/sets the path for the Windows Registry key that will contain the data.
+            </summary>
+        </member>
+        <member name="M:AutoUpdaterDotNET.RegistryPersistenceProvider.GetSkippedVersion">
+            <inheritdoc />
+        </member>
+        <member name="M:AutoUpdaterDotNET.RegistryPersistenceProvider.GetRemindLater">
+            <inheritdoc />
+        </member>
+        <member name="M:AutoUpdaterDotNET.RegistryPersistenceProvider.SetSkippedVersion(System.Version)">
+            <inheritdoc />
+        </member>
+        <member name="M:AutoUpdaterDotNET.RegistryPersistenceProvider.SetRemindLater(System.Nullable{System.DateTime})">
+            <inheritdoc />
+        </member>
+        <member name="F:AutoUpdaterDotNET.RemindLaterForm.components">
+            <summary>
+            Required designer variable.
+            </summary>
+        </member>
+        <member name="M:AutoUpdaterDotNET.RemindLaterForm.Dispose(System.Boolean)">
+            <summary>
+            Clean up any resources being used.
+            </summary>
+            <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        </member>
+        <member name="M:AutoUpdaterDotNET.RemindLaterForm.InitializeComponent">
+            <summary>
+            Required method for Designer support - do not modify
+            the contents of this method with the code editor.
+            </summary>
+        </member>
+        <member name="F:AutoUpdaterDotNET.UpdateForm.components">
+            <summary>
+            Required designer variable.
+            </summary>
+        </member>
+        <member name="M:AutoUpdaterDotNET.UpdateForm.Dispose(System.Boolean)">
+            <summary>
+            Clean up any resources being used.
+            </summary>
+            <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        </member>
+        <member name="M:AutoUpdaterDotNET.UpdateForm.InitializeComponent">
+            <summary>
+            Required method for Designer support - do not modify
+            the contents of this method with the code editor.
+            </summary>
+        </member>
+        <member name="T:AutoUpdaterDotNET.UpdateInfoEventArgs">
+            <summary>
+                Object of this class gives you all the details about the update useful in handling the update logic yourself.
+            </summary>
+        </member>
+        <member name="M:AutoUpdaterDotNET.UpdateInfoEventArgs.#ctor">
+            <inheritdoc />
+        </member>
+        <member name="P:AutoUpdaterDotNET.UpdateInfoEventArgs.IsUpdateAvailable">
+            <summary>
+                If new update is available then returns true otherwise false.
+            </summary>
+        </member>
+        <member name="P:AutoUpdaterDotNET.UpdateInfoEventArgs.Error">
+            <summary>
+                If there is an error while checking for update then this property won't be null.
+            </summary>
+        </member>
+        <member name="P:AutoUpdaterDotNET.UpdateInfoEventArgs.DownloadURL">
+            <summary>
+                Download URL of the update file.
+            </summary>
+        </member>
+        <member name="P:AutoUpdaterDotNET.UpdateInfoEventArgs.ChangelogURL">
+            <summary>
+                URL of the webpage specifying changes in the new update.
+            </summary>
+        </member>
+        <member name="P:AutoUpdaterDotNET.UpdateInfoEventArgs.CurrentVersion">
+            <summary>
+                Returns newest version of the application available to download.
+            </summary>
+        </member>
+        <member name="P:AutoUpdaterDotNET.UpdateInfoEventArgs.InstalledVersion">
+            <summary>
+                Returns version of the application currently installed on the user's PC.
+            </summary>
+        </member>
+        <member name="P:AutoUpdaterDotNET.UpdateInfoEventArgs.Mandatory">
+            <summary>
+                Shows if the update is required or optional.
+            </summary>
+        </member>
+        <member name="P:AutoUpdaterDotNET.UpdateInfoEventArgs.ExecutablePath">
+            <summary>
+                Executable path of the updated application relative to installation directory.
+            </summary>
+        </member>
+        <member name="P:AutoUpdaterDotNET.UpdateInfoEventArgs.InstallerArgs">
+            <summary>
+                Command line arguments used by Installer.
+            </summary>
+        </member>
+        <member name="P:AutoUpdaterDotNET.UpdateInfoEventArgs.CheckSum">
+            <summary>
+                Checksum of the update file.
+            </summary>
+        </member>
+        <member name="T:AutoUpdaterDotNET.Mandatory">
+            <summary>
+                Mandatory class to fetch the XML values related to Mandatory field.
+            </summary>
+        </member>
+        <member name="P:AutoUpdaterDotNET.Mandatory.Value">
+            <summary>
+                Value of the Mandatory field.
+            </summary>
+        </member>
+        <member name="P:AutoUpdaterDotNET.Mandatory.MinimumVersion">
+            <summary>
+                If this is set and 'Value' property is set to true then it will trigger the mandatory update only when current
+                installed version is less than value of this property.
+            </summary>
+        </member>
+        <member name="P:AutoUpdaterDotNET.Mandatory.UpdateMode">
+            <summary>
+                Mode that should be used for this update.
+            </summary>
+        </member>
+        <member name="T:AutoUpdaterDotNET.CheckSum">
+            <summary>
+                Checksum class to fetch the XML values for checksum.
+            </summary>
+        </member>
+        <member name="P:AutoUpdaterDotNET.CheckSum.Value">
+            <summary>
+                Hash of the file.
+            </summary>
+        </member>
+        <member name="P:AutoUpdaterDotNET.CheckSum.HashingAlgorithm">
+            <summary>
+                Hash algorithm that generated the hash.
+            </summary>
+        </member>
+    </members>
+</doc>
diff --git a/DevApp/Gs.DevApp/bin/Debug/FastReport.Bars.dll b/DevApp/Gs.DevApp/bin/Debug/FastReport.Bars.dll
new file mode 100644
index 0000000..1ed0d59
--- /dev/null
+++ b/DevApp/Gs.DevApp/bin/Debug/FastReport.Bars.dll
Binary files differ
diff --git a/DevApp/Gs.DevApp/bin/Debug/FastReport.Editor.dll b/DevApp/Gs.DevApp/bin/Debug/FastReport.Editor.dll
new file mode 100644
index 0000000..b64b4e2
--- /dev/null
+++ b/DevApp/Gs.DevApp/bin/Debug/FastReport.Editor.dll
Binary files differ
diff --git a/DevApp/Gs.DevApp/bin/Debug/FastReport.dll b/DevApp/Gs.DevApp/bin/Debug/FastReport.dll
new file mode 100644
index 0000000..e5e41c0
--- /dev/null
+++ b/DevApp/Gs.DevApp/bin/Debug/FastReport.dll
Binary files differ
diff --git a/DevApp/Gs.DevApp/bin/Debug/templeEasyCode/category1/category.Designer.cs b/DevApp/Gs.DevApp/bin/Debug/templeEasyCode/category1/category.Designer.cs
new file mode 100644
index 0000000..53c794d
--- /dev/null
+++ b/DevApp/Gs.DevApp/bin/Debug/templeEasyCode/category1/category.Designer.cs
@@ -0,0 +1,190 @@
+锘�/* Create By GS EasyCode */
+namespace Gs.DevApp.DevFrm
+{
+    partial class {clsName} 
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+           //BQSetControlObject
+         //BQSetControlInfo
+           this.toolBarMenu1 = new UserControl.UcToolBarMenu();
+            this.gcMain = new DevExpress.XtraGrid.GridControl();
+            this.gridView1 = new DevExpress.XtraGrid.Views.Grid.GridView();
+            this.xtraTabControl1 = new DevExpress.XtraTab.XtraTabControl();
+            this.xtraTabPage1 = new DevExpress.XtraTab.XtraTabPage();
+             this.pageBar1 = new UserControls.Data.UcPageBar();
+            this.xtraTabPage2 = new DevExpress.XtraTab.XtraTabPage();
+            this.panel1 = new System.Windows.Forms.Panel();
+            this.labelControl11 = new DevExpress.XtraEditors.LabelControl();
+            this.lbGuid = new System.Windows.Forms.Label();
+            ((System.ComponentModel.ISupportInitialize)(this.gcMain)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.gridView1)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.xtraTabControl1)).BeginInit();
+            this.xtraTabControl1.SuspendLayout();
+            this.xtraTabPage1.SuspendLayout();
+            this.xtraTabPage2.SuspendLayout();
+            this.panel1.SuspendLayout();
+            this.SuspendLayout();
+            // 
+            // toolBarMenu1
+            // 
+ 
+            this.toolBarMenu1.Dock = System.Windows.Forms.DockStyle.Top;
+            this.toolBarMenu1.isSetBtn = false;
+            this.toolBarMenu1.Location = new System.Drawing.Point(0, 0);
+            this.toolBarMenu1.Name = "toolBarMenu1";
+            this.toolBarMenu1.Size = new System.Drawing.Size(1128, 80);
+            this.toolBarMenu1.TabIndex = 0;
+            // 
+            // gcMain
+            // 
+            this.gcMain.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.gcMain.Font = new System.Drawing.Font("Tahoma", 10F);
+            this.gcMain.Location = new System.Drawing.Point(0, 0);
+            this.gcMain.MainView = this.gridView1;
+            this.gcMain.Name = "gcMain";
+            this.gcMain.Size = new System.Drawing.Size(1126, 531);
+            this.gcMain.TabIndex = 1;
+            this.gcMain.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] {
+            this.gridView1});
+            // 
+            // gridView1
+            // 
+            this.gridView1.Appearance.Row.Font = new System.Drawing.Font("Tahoma", 10F);
+            this.gridView1.Appearance.Row.Options.UseFont = true;
+            this.gridView1.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] {
+          {colList}});
+            this.gridView1.GridControl = this.gcMain;
+           this.gridView1.IndicatorWidth = 50;
+            this.gridView1.Name = "gridView1";
+            this.gridView1.OptionsFind.ShowSearchNavButtons = false;
+            this.gridView1.OptionsView.ShowAutoFilterRow = true;
+            this.gridView1.OptionsView.ShowGroupPanel = false;
+            // 
+            // xtraTabControl1
+            // 
+            this.xtraTabControl1.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.xtraTabControl1.Location = new System.Drawing.Point(0, 80);
+            this.xtraTabControl1.Name = "xtraTabControl1";
+            this.xtraTabControl1.SelectedTabPage = this.xtraTabPage1;
+            this.xtraTabControl1.Size = new System.Drawing.Size(1128, 602);
+            this.xtraTabControl1.TabIndex = 3;
+            this.xtraTabControl1.TabPages.AddRange(new DevExpress.XtraTab.XtraTabPage[] {
+            this.xtraTabPage1,
+            this.xtraTabPage2});
+            // 
+            // xtraTabPage1
+            // 
+            this.xtraTabPage1.Controls.Add(this.gcMain);
+            this.xtraTabPage1.Controls.Add(this.pageBar1);
+            this.xtraTabPage1.Name = "xtraTabPage1";
+            this.xtraTabPage1.Size = new System.Drawing.Size(1126, 570);
+            this.xtraTabPage1.Text = "鏁版嵁鏌ヨ";
+            // 
+            // pageBar1
+            // 
+            this.pageBar1.CurrentPage = 1;
+            this.pageBar1.Dock = System.Windows.Forms.DockStyle.Bottom;
+            this.pageBar1.Location = new System.Drawing.Point(0, 531);
+            this.pageBar1.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
+            this.pageBar1.Name = "pageBar1";
+            this.pageBar1.RecordCount = 0;
+            this.pageBar1.RowsCount = 50;
+            this.pageBar1.Size = new System.Drawing.Size(1126, 39);
+            this.pageBar1.TabIndex = 3;
+            this.pageBar1.TotalPages = 0;
+            // 
+            // xtraTabPage2
+            // 
+            this.xtraTabPage2.Controls.Add(this.panel1);
+            this.xtraTabPage2.Name = "xtraTabPage2";
+            this.xtraTabPage2.PageEnabled = false;
+            this.xtraTabPage2.Size = new System.Drawing.Size(1126, 570);
+            this.xtraTabPage2.Text = "鏁版嵁缂栬緫";
+            // 
+            // panel1
+            // 
+            this.panel1.BackColor = System.Drawing.Color.White;
+            this.panel1.Controls.Add(this.labelControl11);
+            this.panel1.Controls.Add(this.lbGuid);
+            this.panel1.Font = new System.Drawing.Font("Tahoma", 10F);
+            this.panel1.Location = new System.Drawing.Point(76, 20);
+            this.panel1.Name = "panel1";
+            this.panel1.Size = new System.Drawing.Size(585, 426);
+            this.panel1.TabIndex = 1;
+            // 
+            // labelControl11
+            // 
+            this.labelControl11.Location = new System.Drawing.Point(61, 388);
+            this.labelControl11.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.labelControl11.Name = "labelControl11";
+            this.labelControl11.Size = new System.Drawing.Size(45, 18);
+            this.labelControl11.TabIndex = 130;
+            this.labelControl11.Text = "涓婚敭锛�";
+            // 
+            // lbGuid
+            // 
+            this.lbGuid.AutoSize = true;
+            this.lbGuid.Location = new System.Drawing.Point(112, 388);
+            this.lbGuid.Name = "lbGuid";
+            this.lbGuid.Size = new System.Drawing.Size(0, 21);
+            this.lbGuid.TabIndex = 1;
+            // 
+            // category1
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 18F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(1128, 682);
+            this.Controls.Add(this.xtraTabControl1);
+            this.Controls.Add(this.toolBarMenu1);
+          //BQAddControltoMContainer
+            this.Name = "category1";
+            this.Text = "";
+            ((System.ComponentModel.ISupportInitialize)(this.gcMain)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.gridView1)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.xtraTabControl1)).EndInit();
+            this.xtraTabControl1.ResumeLayout(false);
+            this.xtraTabPage1.ResumeLayout(false);
+            this.xtraTabPage2.ResumeLayout(false);
+            this.panel1.ResumeLayout(false);
+            this.panel1.PerformLayout();
+            this.ResumeLayout(false);
+        }
+        #endregion
+      private UserControl.UcToolBarMenu toolBarMenu1;
+        private DevExpress.XtraGrid.GridControl gcMain;
+        private DevExpress.XtraGrid.Views.Grid.GridView gridView1;
+        private DevExpress.XtraTab.XtraTabControl xtraTabControl1;
+        private DevExpress.XtraTab.XtraTabPage xtraTabPage1;
+        private DevExpress.XtraTab.XtraTabPage xtraTabPage2;
+        private UserControls.Data.UcPageBar pageBar1;
+        private System.Windows.Forms.Panel panel1;
+        private System.Windows.Forms.Label lbGuid;
+        private DevExpress.XtraEditors.LabelControl labelControl11;
+       //BQCreateConrolObejct
+    }
+}
\ No newline at end of file
diff --git a/DevApp/Gs.DevApp/bin/Debug/templeEasyCode/category1/category.cs b/DevApp/Gs.DevApp/bin/Debug/templeEasyCode/category1/category.cs
new file mode 100644
index 0000000..8c37e68
--- /dev/null
+++ b/DevApp/Gs.DevApp/bin/Debug/templeEasyCode/category1/category.cs
@@ -0,0 +1,280 @@
+锘縰sing Gs.DevApp.Entity;
+using Gs.DevApp.ToolBox;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Drawing;
+using System.Windows.Forms;
+
+namespace Gs.DevApp.DevFrm
+{
+    public partial class {clsName}  : DevExpress.XtraEditors.XtraForm
+    {
+        string _webServiceName = "User/";
+        List<FilterEntity> _filterList = new List<FilterEntity>();
+        public {clsName} ()
+        {
+            InitializeComponent();
+            this.toolBarMenu1.btnAddClick += ToolBarMenu1_btnAddClick;
+            this.toolBarMenu1.btnEdtClick += ToolBarMenu1_btnEdtClick;
+            this.toolBarMenu1.btnSaveClick += ToolBarMenu1_btnSaveClick;
+            this.toolBarMenu1.btnLoadClick += ToolBarMenu1_btnLoadClick;
+            this.toolBarMenu1.btnDelClick += ToolBarMenu1_btnDelClick1;
+            this.toolBarMenu1.btnEscClick += ToolBarMenu1_btnEscClick;
+            this.toolBarMenu1.btnQueryClick += ToolBarMenu1_btnQueryClick;
+            gcMain.MouseDoubleClick += GcMain_MouseDoubleClick;
+            getPageList(1, UtilityHelper.GetPageSize());
+            pageBar1.PagerEvent += PageBar1_PagerEvent;
+            gridView1.CustomDrawRowIndicator += (s, e) =>
+            {
+                if (e.Info.IsRowIndicator && e.RowHandle >= 0)
+                {
+                    e.Info.DisplayText = (e.RowHandle + 1).ToString();
+                }
+            };
+            gridView1.CustomDrawEmptyForeground += (s, e) =>
+            {
+                string str = "鏆傛湭鏌ユ壘鍒板尮閰嶇殑鏁版嵁!";
+                Font f = new Font("寰蒋闆呴粦", 16);
+                Rectangle r = new Rectangle(gridView1.GridControl.Width / 2 - 100, e.Bounds.Top + 45, e.Bounds.Right - 5, e.Bounds.Height - 5);
+                e.Graphics.DrawString(str, f, Brushes.Gray, r);
+            };
+        }
+
+        /// <summary>
+        /// 鍙屽嚮浜嬩欢
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void GcMain_MouseDoubleClick(object sender, MouseEventArgs e)
+        {
+            string rowGuid = Gs.DevApp.ToolBox.UtilityHelper.GetCurrentDoubleRow(gridView1, e, "guid");
+            if (!string.IsNullOrEmpty(rowGuid))
+                getModel(rowGuid, false, 999);
+        }
+        /// <summary>
+        /// 鍒嗛〉浜嬩欢
+        /// </summary>
+        /// <param name="curPage"></param>
+        /// <param name="pageSize"></param>
+        private void PageBar1_PagerEvent(int curPage, int pageSize)
+        {
+            getPageList(curPage, pageSize);
+        }
+        /// <summary>
+        /// 鏌ヨ浜嬩欢
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void ToolBarMenu1_btnQueryClick(object sender, EventArgs e)
+        {
+            Gs.DevApp.UserControl.ShowFilter frm = new Gs.DevApp.UserControl.ShowFilter(gridView1.Columns, _filterList);
+            frm.UpdateParent += Frm_UpdateParent;
+            frm.ShowDialog();
+        }
+        /// <summary>
+        /// 鏌ヨ鍥炶皟
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void Frm_UpdateParent(object sender, UpdateParentEventArgs e)
+        {
+            _filterList = e.FilterList;
+            getPageList(1, pageBar1.RowsCount);
+        }
+
+        /// <summary>
+        /// 鍙栨秷浜嬩欢
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void ToolBarMenu1_btnEscClick(object sender, EventArgs e)
+        {
+            UtilityHelper.JumpToTab(xtraTabControl1, 0);
+        }
+
+        /// <summary>
+        /// 鍒犻櫎浜嬩欢
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void ToolBarMenu1_btnDelClick1(object sender, EventArgs e)
+        {
+            string rowGuid = "", rowName = "";
+            //  (rowGuid, rowName) = UtilityHelper.GetCurrentRow(xtraTabControl1, lbGuid, txt_userName, gridView1);
+            if (string.IsNullOrEmpty(rowGuid))
+            {
+                ToolBox.MsgHelper.Warning("璇峰厛閫夋嫨浣犺鎿嶄綔鐨勮锛�");
+                return;
+            }
+            if (!MsgHelper.AskQuestion("浣犻�夋嫨浜嗐��" + rowName + "銆戯紝纭畾鍒犻櫎鍚楋紵"))
+                return;
+            List<dynamic> lst = new List<dynamic>();
+          lst.Add(rowGuid);
+          var _obj = lst;
+            try
+            {
+                string strJson = UtilityHelper.HttpPost("", _webServiceName + "DeleteModel", JsonConvert.SerializeObject(_obj));
+                ReturnModel<dynamic> _rtn = ToolBox.UtilityHelper.ReturnToDynamic(strJson);
+                if (_rtn.rtnCode > 0)
+                {
+                    UtilityHelper.JumpToTab(xtraTabControl1, 0);
+                    getPageList(1, UtilityHelper.GetPageSize());
+                }
+                ToolBox.MsgHelper.Warning("鎻愮ず锛�" + _rtn.rtnMsg);
+            }
+            catch (Exception ex)
+            {
+                ToolBox.MsgHelper.Warning("鎻愮ず锛�" + ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 鍒锋柊浜嬩欢
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void ToolBarMenu1_btnLoadClick(object sender, EventArgs e)
+        {
+            UtilityHelper.JumpToTab(xtraTabControl1, 0);
+            getPageList(1, UtilityHelper.GetPageSize());
+        }
+        /// <summary>
+        /// 淇敼浜嬩欢
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void ToolBarMenu1_btnEdtClick(object sender, EventArgs e)
+        {
+            string rowGuid = "", rowName = "";
+            // (rowGuid, rowName) = UtilityHelper.GetCurrentRow(xtraTabControl1, lbGuid, txt_userName, gridView1);
+            if (string.IsNullOrEmpty(rowGuid))
+            {
+                ToolBox.MsgHelper.Warning("璇峰厛閫夋嫨浣犺鎿嶄綔鐨勮锛�");
+                return;
+            }
+            getModel(rowGuid, true, 1);
+        }
+        /// <summary>
+        /// 鏂板浜嬩欢
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void ToolBarMenu1_btnAddClick(object sender, EventArgs e)
+        {
+            UtilityHelper.JumpToTab(xtraTabControl1, 1);
+            lbGuid.Text = "";
+            UtilityHelper.CleanValueByControl(this.panel1.Controls, true);
+
+        }
+        /// <summary>
+        /// 淇濆瓨浜嬩欢
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void ToolBarMenu1_btnSaveClick(object sender, EventArgs e)
+        {
+            toolBarMenu1.isSetBtn = false;
+            //if (string.IsNullOrEmpty(txt_account.Text.Trim()))
+            {
+                Gs.DevApp.ToolBox.MsgHelper.Warning("鐧诲綍璐﹀彿涓嶈兘涓虹┖锛�");
+                // txt_account.Focus();
+                return;
+            }
+            var _obj = new
+            {
+                guid = lbGuid.Text.Trim(),//涓诲缓
+
+            };
+            try
+            {
+                string strJson = UtilityHelper.HttpPost("", _webServiceName + "EditModel", JsonConvert.SerializeObject(_obj));
+                ReturnModel<dynamic> _rtn = ToolBox.UtilityHelper.ReturnToDynamic(strJson);
+                ToolBox.MsgHelper.Warning("鎻愮ず锛�" + _rtn.rtnMsg);
+                if (_rtn.rtnCode > 0)
+                {
+                    lbGuid.Text = _rtn.rtnData;
+                    toolBarMenu1.isSetBtn = true;
+                    UtilityHelper.ChangeEnableByControl(this.panel1.Controls, false);
+                }
+            }
+            catch (Exception ex)
+            {
+                ToolBox.MsgHelper.Warning("鎻愮ず锛�" + ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="curPage">绗嚑椤�</param>
+        /// <param name="pageSize">姣忛〉鍑犳潯</param>
+        private void getPageList(int curPage, int pageSize)
+        {
+            System.Text.StringBuilder _sbSqlWhere = new System.Text.StringBuilder();
+            foreach (FilterEntity itm in _filterList)
+            {
+                _sbSqlWhere.Append(" and " + itm.fileId + itm.fileOper + "'" + itm.fileValue + "'");
+            }
+            PageQueryModel pgq = new PageQueryModel(curPage, pageSize, "create_date", "asc", "", _sbSqlWhere.ToString());
+            string json = JsonConvert.SerializeObject(pgq);
+            try
+            {
+                string strReturn = UtilityHelper.HttpPost("", _webServiceName + "GetListPage", json);
+                ReturnModel<PageListModel> dd = UtilityHelper.ReturnToTablePage(strReturn);
+                DataTable dt = dd.rtnData.list;
+                gcMain.BindingContext = new BindingContext();
+                gcMain.DataSource = dt;
+                gcMain.ForceInitialize();
+                int dddd = dd.rtnData.pages;//鎬婚〉
+                pageBar1.TotalPages = dddd;
+                pageBar1.RecordCount = dd.rtnData.total;//璁板綍鎬绘暟
+                pageBar1.CurrentPage = curPage;//褰撳墠椤�
+                pageBar1.RowsCount = pageSize;//姣忛〉鏄剧ず
+                pageBar1.setTxt();
+            }
+            catch (Exception ex)
+            {
+                ToolBox.MsgHelper.Warning("鎻愮ず锛�" + ex.Message);
+            }
+        }
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="strGuid">涓婚敭</param>
+        /// <param name="isEdit">鏄惁鍙紪杈�</param>
+        /// <param name="tabIdx">閫夐」鍗″簭鍙�</param>
+        private void getModel(string strGuid, bool isEdit, int tabIdx)
+        {
+            if (string.IsNullOrEmpty(strGuid))
+            {
+                ToolBox.MsgHelper.Warning("璇峰厛閫夋嫨浣犺鎿嶄綔鐨勮锛�");
+                return;
+            }
+            UtilityHelper.JumpToTab(xtraTabControl1, tabIdx);
+            var _obj = new
+            {
+                guid = strGuid,//涓诲缓
+            };
+            try
+            {
+                string strJson = UtilityHelper.HttpPost("", _webServiceName + "GetModel", JsonConvert.SerializeObject(_obj));
+                ReturnModel<dynamic> _rtn = ToolBox.UtilityHelper.ReturnToDynamic(strJson);
+                if (_rtn.rtnCode > 0)
+                {
+                    dynamic dy = _rtn.rtnData;
+                    lbGuid.Text = strGuid;
+                    UtilityHelper.SetValueByObj(this.panel1.Controls, dy, isEdit);
+
+                }
+                else
+                    ToolBox.MsgHelper.Warning("鎻愮ず锛�" + _rtn.rtnMsg);
+            }
+            catch (Exception ex)
+            {
+                ToolBox.MsgHelper.Warning("鎻愮ず锛�" + ex.Message);
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/DevApp/Gs.DevApp/bin/Debug/templeEasyCode/category1/category.resx b/DevApp/Gs.DevApp/bin/Debug/templeEasyCode/category1/category.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/DevApp/Gs.DevApp/bin/Debug/templeEasyCode/category1/category.resx
@@ -0,0 +1,120 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
\ No newline at end of file
diff --git a/DevApp/Gs.DevApp/bin/Debug/templeEasyCode/category2/category.Designer.cs b/DevApp/Gs.DevApp/bin/Debug/templeEasyCode/category2/category.Designer.cs
new file mode 100644
index 0000000..aa32415
--- /dev/null
+++ b/DevApp/Gs.DevApp/bin/Debug/templeEasyCode/category2/category.Designer.cs
@@ -0,0 +1,222 @@
+锘�/* Create By GS EasyCode */
+namespace Gs.DevApp.DevFrm
+{
+    partial class {clsName} 
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+        //BQSetControlObject
+         //BQSetControlInfo
+           this.toolBarMenu1 = new UserControl.UcToolBarMenu();
+            this.gcMain = new DevExpress.XtraGrid.GridControl();
+            this.gridView1 = new DevExpress.XtraGrid.Views.Grid.GridView();
+            this.xtraTabControl1 = new DevExpress.XtraTab.XtraTabControl();
+            this.xtraTabPage1 = new DevExpress.XtraTab.XtraTabPage();
+             this.pageBar1 = new UserControls.Data.UcPageBar();
+            this.xtraTabPage2 = new DevExpress.XtraTab.XtraTabPage();
+            this.panel1 = new System.Windows.Forms.Panel();
+   this.tabMx = new DevExpress.XtraTab.XtraTabControl();
+  
+  
+            this.labelControl11 = new DevExpress.XtraEditors.LabelControl();
+            this.lbGuid = new System.Windows.Forms.Label();
+            ((System.ComponentModel.ISupportInitialize)(this.gcMain)).BeginInit();
+  ((System.ComponentModel.ISupportInitialize)(this.gridView1)).BeginInit();
+  ((System.ComponentModel.ISupportInitialize)(this.xtraTabControl1)).BeginInit();
+  ((System.ComponentModel.ISupportInitialize)(this.tabMx)).BeginInit();
+{begInit}
+
+  this.xtraTabControl1.SuspendLayout();
+  this.xtraTabPage1.SuspendLayout();
+  this.xtraTabPage2.SuspendLayout();
+  this.tabMx.SuspendLayout();
+  {layoutList}
+  this.panel1.SuspendLayout();
+  this.SuspendLayout();
+            // 
+            // toolBarMenu1
+            // 
+ 
+            this.toolBarMenu1.Dock = System.Windows.Forms.DockStyle.Top;
+            this.toolBarMenu1.isSetBtn = false;
+            this.toolBarMenu1.Location = new System.Drawing.Point(0, 0);
+            this.toolBarMenu1.Name = "toolBarMenu1";
+            this.toolBarMenu1.Size = new System.Drawing.Size(1128, 80);
+            this.toolBarMenu1.TabIndex = 0;
+            // 
+            // gcMain
+            // 
+            this.gcMain.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.gcMain.Font = new System.Drawing.Font("Tahoma", 10F);
+            this.gcMain.Location = new System.Drawing.Point(0, 0);
+            this.gcMain.MainView = this.gridView1;
+            this.gcMain.Name = "gcMain";
+            this.gcMain.Size = new System.Drawing.Size(1126, 531);
+            this.gcMain.TabIndex = 1;
+            this.gcMain.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] {
+            this.gridView1});
+            // 
+            // gridView1
+            // 
+            this.gridView1.Appearance.Row.Font = new System.Drawing.Font("Tahoma", 10F);
+            this.gridView1.Appearance.Row.Options.UseFont = true;
+            this.gridView1.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] {
+          {colList}});
+            this.gridView1.GridControl = this.gcMain;
+this.gridView1.IndicatorWidth = 50;
+            this.gridView1.Name = "gridView1";
+            this.gridView1.OptionsFind.ShowSearchNavButtons = false;
+            this.gridView1.OptionsView.ShowAutoFilterRow = true;
+            this.gridView1.OptionsView.ShowGroupPanel = false;
+            // 
+            // xtraTabControl1
+            // 
+            this.xtraTabControl1.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.xtraTabControl1.Location = new System.Drawing.Point(0, 80);
+            this.xtraTabControl1.Name = "xtraTabControl1";
+            this.xtraTabControl1.SelectedTabPage = this.xtraTabPage1;
+            this.xtraTabControl1.Size = new System.Drawing.Size(1128, 602);
+            this.xtraTabControl1.TabIndex = 3;
+            this.xtraTabControl1.TabPages.AddRange(new DevExpress.XtraTab.XtraTabPage[] {
+            this.xtraTabPage1,
+            this.xtraTabPage2});
+            // 
+            // xtraTabPage1
+            // 
+            this.xtraTabPage1.Controls.Add(this.gcMain);
+            this.xtraTabPage1.Controls.Add(this.pageBar1);
+            this.xtraTabPage1.Name = "xtraTabPage1";
+            this.xtraTabPage1.Size = new System.Drawing.Size(1126, 570);
+            this.xtraTabPage1.Text = "鏁版嵁鏌ヨ";
+            // 
+            // pageBar1
+            // 
+            this.pageBar1.CurrentPage = 1;
+            this.pageBar1.Dock = System.Windows.Forms.DockStyle.Bottom;
+            this.pageBar1.Location = new System.Drawing.Point(0, 531);
+            this.pageBar1.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
+            this.pageBar1.Name = "pageBar1";
+            this.pageBar1.RecordCount = 0;
+            this.pageBar1.RowsCount = 50;
+            this.pageBar1.Size = new System.Drawing.Size(1126, 39);
+            this.pageBar1.TabIndex = 3;
+            this.pageBar1.TotalPages = 0;
+            // 
+            // xtraTabPage2
+            // 
+  this.xtraTabPage2.Controls.Add(this.tabMx);
+            this.xtraTabPage2.Controls.Add(this.panel1);
+
+            this.xtraTabPage2.Name = "xtraTabPage2";
+            this.xtraTabPage2.PageEnabled = false;
+            this.xtraTabPage2.Size = new System.Drawing.Size(1126, 570);
+            this.xtraTabPage2.Text = "鏁版嵁缂栬緫";
+
+  // 
+  // tabMx
+  // 
+  this.tabMx.Dock = System.Windows.Forms.DockStyle.Fill;
+  this.tabMx.Location = new System.Drawing.Point(0, 323);
+  this.tabMx.Name = "tabMx";
+  this.tabMx.SelectedTabPage = this.tabMxPage1;
+  this.tabMx.Size = new System.Drawing.Size(1126, 247);
+  this.tabMx.TabIndex = 2;
+  this.tabMx.TabPages.AddRange(new DevExpress.XtraTab.XtraTabPage[] {
+   {tabMx1List}});
+ 
+  
+            // 
+            // panel1
+            // 
+            this.panel1.BackColor = System.Drawing.Color.White;
+            this.panel1.Controls.Add(this.labelControl11);
+            this.panel1.Controls.Add(this.lbGuid);
+           this.panel1.Dock = System.Windows.Forms.DockStyle.Top;
+            this.panel1.Font = new System.Drawing.Font("Tahoma", 10F);
+            this.panel1.Location = new System.Drawing.Point(76, 20);
+            this.panel1.Name = "panel1";
+            this.panel1.Size = new System.Drawing.Size(585, 426);
+            this.panel1.TabIndex = 1;
+            // 
+            // labelControl11
+            // 
+            this.labelControl11.Location = new System.Drawing.Point(61, 388);
+            this.labelControl11.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.labelControl11.Name = "labelControl11";
+            this.labelControl11.Size = new System.Drawing.Size(45, 18);
+            this.labelControl11.TabIndex = 130;
+            this.labelControl11.Text = "涓婚敭锛�";
+            // 
+            // lbGuid
+            // 
+            this.lbGuid.AutoSize = true;
+            this.lbGuid.Location = new System.Drawing.Point(112, 388);
+            this.lbGuid.Name = "lbGuid";
+            this.lbGuid.Size = new System.Drawing.Size(0, 21);
+            this.lbGuid.TabIndex = 1;
+            // 
+            // category1
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 18F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(1128, 682);
+            this.Controls.Add(this.xtraTabControl1);
+            this.Controls.Add(this.toolBarMenu1);
+          //BQAddControltoMContainer
+            this.Name = "category1";
+            this.Text = "";
+             ((System.ComponentModel.ISupportInitialize)(this.gcMain)).EndInit();
+  ((System.ComponentModel.ISupportInitialize)(this.gridView1)).EndInit();
+  ((System.ComponentModel.ISupportInitialize)(this.xtraTabControl1)).EndInit();
+  this.xtraTabControl1.ResumeLayout(false);
+  this.xtraTabPage1.ResumeLayout(false);
+  this.xtraTabPage2.ResumeLayout(false);
+  ((System.ComponentModel.ISupportInitialize)(this.tabMx)).EndInit();
+  this.tabMx.ResumeLayout(false);
+ {resumeLayout}
+  ((System.ComponentModel.ISupportInitialize)(this.gcMx1)).EndInit();
+  ((System.ComponentModel.ISupportInitialize)(this.gvMx1)).EndInit();
+  this.panel1.ResumeLayout(false);
+  this.panel1.PerformLayout();
+  this.ResumeLayout(false);
+        }
+        #endregion
+      private UserControl.UcToolBarMenu toolBarMenu1;
+        private DevExpress.XtraGrid.GridControl gcMain;
+        private DevExpress.XtraGrid.Views.Grid.GridView gridView1;
+        private DevExpress.XtraTab.XtraTabControl xtraTabControl1;
+        private DevExpress.XtraTab.XtraTabPage xtraTabPage1;
+        private DevExpress.XtraTab.XtraTabPage xtraTabPage2;
+        private UserControls.Data.UcPageBar pageBar1;
+        private System.Windows.Forms.Panel panel1;
+        private System.Windows.Forms.Label lbGuid;
+        private DevExpress.XtraEditors.LabelControl labelControl11;
+  private DevExpress.XtraTab.XtraTabControl tabMx;
+ 
+       //BQCreateConrolObejct
+    }
+}
\ No newline at end of file
diff --git a/DevApp/Gs.DevApp/bin/Debug/templeEasyCode/category2/category.cs b/DevApp/Gs.DevApp/bin/Debug/templeEasyCode/category2/category.cs
new file mode 100644
index 0000000..9f9bb30
--- /dev/null
+++ b/DevApp/Gs.DevApp/bin/Debug/templeEasyCode/category2/category.cs
@@ -0,0 +1,297 @@
+锘縰sing DevExpress.XtraGrid.Views.Grid;
+using DevExpress.XtraGrid.Views.Grid.ViewInfo;
+using Gs.DevApp.Entity;
+using Gs.DevApp.ToolBox;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Drawing;
+using System.Windows.Forms;
+
+namespace Gs.DevApp.DevFrm
+{
+    public partial class {clsName} : DevExpress.XtraEditors.XtraForm
+    {
+        string _webServiceName = "User/";
+        List<FilterEntity> _filterList = new List<FilterEntity>();
+        public {clsName}()
+        {
+            InitializeComponent();
+            this.toolBarMenu1.btnAddClick += ToolBarMenu1_btnAddClick;
+            this.toolBarMenu1.btnEdtClick += ToolBarMenu1_btnEdtClick;
+            this.toolBarMenu1.btnSaveClick += ToolBarMenu1_btnSaveClick;
+            this.toolBarMenu1.btnLoadClick += ToolBarMenu1_btnLoadClick;
+            this.toolBarMenu1.btnDelClick += ToolBarMenu1_btnDelClick1;
+            this.toolBarMenu1.btnEscClick += ToolBarMenu1_btnEscClick;
+            this.toolBarMenu1.btnQueryClick += ToolBarMenu1_btnQueryClick;
+            gcMain.MouseDoubleClick += GcMain_MouseDoubleClick;
+            getPageList(1, UtilityHelper.GetPageSize());
+            pageBar1.PagerEvent += PageBar1_PagerEvent;
+            gridView1.CustomDrawRowIndicator += (s, e) =>
+            {
+                if (e.Info.IsRowIndicator && e.RowHandle >= 0)
+                {
+                    e.Info.DisplayText = (e.RowHandle + 1).ToString();
+                }
+            };
+            gridView1.CustomDrawEmptyForeground += (s, e) =>
+            {
+                string str = "鏆傛湭鏌ユ壘鍒板尮閰嶇殑鏁版嵁!";
+                Font f = new Font("寰蒋闆呴粦", 16);
+                Rectangle r = new Rectangle(gridView1.GridControl.Width / 2 - 100, e.Bounds.Top + 45, e.Bounds.Right - 5, e.Bounds.Height - 5);
+                e.Graphics.DrawString(str, f, Brushes.Gray, r);
+            };
+        }
+
+        /// <summary>
+        /// 鍙屽嚮浜嬩欢
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void GcMain_MouseDoubleClick(object sender, MouseEventArgs e)
+        {
+            string rowGuid = Gs.DevApp.ToolBox.UtilityHelper.GetCurrentDoubleRow(gridView1, e, "guid");
+            if (!string.IsNullOrEmpty(rowGuid))
+                getModel(rowGuid, false, 999);
+        }
+        /// <summary>
+        /// 鍒嗛〉浜嬩欢
+        /// </summary>
+        /// <param name="curPage"></param>
+        /// <param name="pageSize"></param>
+        private void PageBar1_PagerEvent(int curPage, int pageSize)
+        {
+            getPageList(curPage, pageSize);
+        }
+        /// <summary>
+        /// 鏌ヨ浜嬩欢
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void ToolBarMenu1_btnQueryClick(object sender, EventArgs e)
+        {
+            Gs.DevApp.UserControl.ShowFilter frm = new Gs.DevApp.UserControl.ShowFilter(gridView1.Columns, _filterList);
+            frm.UpdateParent += Frm_UpdateParent;
+            frm.ShowDialog();
+        }
+        /// <summary>
+        /// 鏌ヨ鍥炶皟
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void Frm_UpdateParent(object sender, UpdateParentEventArgs e)
+        {
+            _filterList = e.FilterList;
+            getPageList(1, pageBar1.RowsCount);
+        }
+
+        /// <summary>
+        /// 鍙栨秷浜嬩欢
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void ToolBarMenu1_btnEscClick(object sender, EventArgs e)
+        {
+            UtilityHelper.JumpToTab(xtraTabControl1, 0);
+        }
+
+        /// <summary>
+        /// 鍒犻櫎浜嬩欢
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void ToolBarMenu1_btnDelClick1(object sender, EventArgs e)
+        {
+            string rowGuid = "", rowName = "";
+            // (rowGuid, rowName) = UtilityHelper.GetCurrentRow(xtraTabControl1, lbGuid, txt_billNo, gridView1);
+            if (string.IsNullOrEmpty(rowGuid))
+            {
+                ToolBox.MsgHelper.Warning("璇峰厛閫夋嫨浣犺鎿嶄綔鐨勮锛�");
+                return;
+            }
+            if (!MsgHelper.AskQuestion("浣犻�夋嫨浜嗐��" + rowName + "銆戯紝纭畾鍒犻櫎鍚楋紵"))
+                return;
+               List<dynamic> lst = new List<dynamic>();
+          lst.Add(rowGuid);
+          var _obj = lst;
+            try
+            {
+                string strJson = UtilityHelper.HttpPost("", _webServiceName + "DeleteModel", JsonConvert.SerializeObject(_obj));
+                ReturnModel<dynamic> _rtn = ToolBox.UtilityHelper.ReturnToDynamic(strJson);
+                if (_rtn.rtnCode > 0)
+                {
+                    UtilityHelper.JumpToTab(xtraTabControl1, 0);
+                    getPageList(1, UtilityHelper.GetPageSize());
+                }
+                ToolBox.MsgHelper.Warning("鎻愮ず锛�" + _rtn.rtnMsg);
+            }
+            catch (Exception ex)
+            {
+                ToolBox.MsgHelper.Warning("鎻愮ず锛�" + ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 鍒锋柊浜嬩欢
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void ToolBarMenu1_btnLoadClick(object sender, EventArgs e)
+        {
+            UtilityHelper.JumpToTab(xtraTabControl1, 0);
+            getPageList(1, UtilityHelper.GetPageSize());
+        }
+        /// <summary>
+        /// 淇敼浜嬩欢
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void ToolBarMenu1_btnEdtClick(object sender, EventArgs e)
+        {
+            string rowGuid = "", rowName = "";
+            // (rowGuid, rowName) = UtilityHelper.GetCurrentRow(xtraTabControl1, lbGuid, txt_billNo, gridView1);
+            if (string.IsNullOrEmpty(rowGuid))
+            {
+                ToolBox.MsgHelper.Warning("璇峰厛閫夋嫨浣犺鎿嶄綔鐨勮锛�");
+                return;
+            }
+            getModel(rowGuid, true, 1);
+        }
+        /// <summary>
+        /// 鏂板浜嬩欢
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void ToolBarMenu1_btnAddClick(object sender, EventArgs e)
+        {
+               UtilityHelper.JumpToTab(xtraTabControl1, 1);
+ lbGuid.Text = "";
+ List<DevExpress.XtraGrid.Views.Grid.GridView> gridViews = new List<DevExpress.XtraGrid.Views.Grid.GridView>();
+ gridViews.Add(gvMx1);
+ UtilityHelper.CleanValueByControl(this.panel1.Controls, true, gridViews);
+ Gs.DevApp.ToolBox.UtilityHelper.SetDefaultTable(gcMx1, gvMx1);
+        }
+        /// <summary>
+        /// 淇濆瓨浜嬩欢
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void ToolBarMenu1_btnSaveClick(object sender, EventArgs e)
+        {
+            toolBarMenu1.isSetBtn = false;
+            //if (string.IsNullOrEmpty(txt_account.Text.Trim()))
+            {
+                Gs.DevApp.ToolBox.MsgHelper.Warning("鐧诲綍璐﹀彿涓嶈兘涓虹┖锛�");
+                // txt_account.Focus();
+                return;
+            }
+            var _obj = new
+            {
+                guid = lbGuid.Text.Trim(),//涓诲缓
+
+            };
+            try
+            {
+                string strJson = UtilityHelper.HttpPost("", _webServiceName + "EditModel", JsonConvert.SerializeObject(_obj));
+                ReturnModel<dynamic> _rtn = ToolBox.UtilityHelper.ReturnToDynamic(strJson);
+                ToolBox.MsgHelper.Warning("鎻愮ず锛�" + _rtn.rtnMsg);
+                if (_rtn.rtnCode > 0)
+                {
+                    lbGuid.Text = _rtn.rtnData;
+                    toolBarMenu1.isSetBtn = true;
+                    UtilityHelper.ChangeEnableByControl(this.panel1.Controls, false);
+                }
+            }
+            catch (Exception ex)
+            {
+                ToolBox.MsgHelper.Warning("鎻愮ず锛�" + ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="curPage">绗嚑椤�</param>
+        /// <param name="pageSize">姣忛〉鍑犳潯</param>
+        private void getPageList(int curPage, int pageSize)
+        {
+            System.Text.StringBuilder _sbSqlWhere = new System.Text.StringBuilder();
+            foreach (FilterEntity itm in _filterList)
+            {
+                _sbSqlWhere.Append(" and " + itm.fileId + itm.fileOper + "'" + itm.fileValue + "'");
+            }
+            PageQueryModel pgq = new PageQueryModel(curPage, pageSize, "create_date", "asc", "", _sbSqlWhere.ToString());
+            string json = JsonConvert.SerializeObject(pgq);
+            try
+            {
+                string strReturn = UtilityHelper.HttpPost("", _webServiceName + "GetListPage", json);
+                ReturnModel<PageListModel> dd = UtilityHelper.ReturnToTablePage(strReturn);
+                DataTable dt = dd.rtnData.list;
+                gcMain.BindingContext = new BindingContext();
+                gcMain.DataSource = dt;
+                gcMain.ForceInitialize();
+                int dddd = dd.rtnData.pages;//鎬婚〉
+                pageBar1.TotalPages = dddd;
+                pageBar1.RecordCount = dd.rtnData.total;//璁板綍鎬绘暟
+                pageBar1.CurrentPage = curPage;//褰撳墠椤�
+                pageBar1.RowsCount = pageSize;//姣忛〉鏄剧ず
+                pageBar1.setTxt();
+            }
+            catch (Exception ex)
+            {
+                ToolBox.MsgHelper.Warning("鎻愮ず锛�" + ex.Message);
+            }
+        }
+        private void getModel(string strGuid, bool isEdit, int tabIdx)
+        {
+            if (string.IsNullOrEmpty(strGuid))
+            {
+                ToolBox.MsgHelper.Warning("璇峰厛閫夋嫨浣犺鎿嶄綔鐨勮锛�");
+                return;
+            }
+            UtilityHelper.JumpToTab(xtraTabControl1, tabIdx);
+            var _obj = new
+            {
+                guid = strGuid,//涓诲缓
+            };
+            try
+            {
+                string strJson = UtilityHelper.HttpPost("", _webServiceName +"GetModel", JsonConvert.SerializeObject(_obj));
+                ReturnModel<dynamic> _rtn = ToolBox.UtilityHelper.ReturnToDynamic(strJson);
+                if (_rtn.rtnCode > 0)
+                {
+                    dynamic dy = _rtn.rtnData;
+                    lbGuid.Text = strGuid;
+                    List<DevExpress.XtraGrid.Views.Grid.GridView> gvList = new List<DevExpress.XtraGrid.Views.Grid.GridView>();
+                    gvList.Add(gvMx1);
+                    UtilityHelper.SetValueByObj(this.panel1.Controls, dy, isEdit, gvList);
+                    JObject _job = JObject.Parse(strJson);
+                    JArray array = new JArray();
+                    foreach (var a in _job["rtnData"]["list"])
+                    {
+                        array.Add(a);
+                    }
+                    DataTable dt = JsonConvert.DeserializeObject<DataTable>(array.ToString());
+                    if (dt.Rows.Count > 0)
+                    {
+                        gcMx1.BindingContext = new BindingContext();
+                        gcMx1.DataSource = dt;
+                        gcMx1.ForceInitialize();
+                    }
+                    else
+                    {
+                        Gs.DevApp.ToolBox.UtilityHelper.SetDefaultTable(gcMx1, gvMx1);
+                    }
+                }
+                else
+                    ToolBox.MsgHelper.Warning("鎻愮ず锛�" + _rtn.rtnMsg);
+            }
+            catch (Exception ex)
+            {
+                ToolBox.MsgHelper.Warning("鎻愮ず锛�" + ex.Message);
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/DevApp/Gs.DevApp/bin/Debug/templeEasyCode/category2/category.resx b/DevApp/Gs.DevApp/bin/Debug/templeEasyCode/category2/category.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/DevApp/Gs.DevApp/bin/Debug/templeEasyCode/category2/category.resx
@@ -0,0 +1,120 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
\ No newline at end of file
diff --git a/DevApp/Gs.DevApp/bin/Debug/templeEasyCode/report/Dictionary.frd b/DevApp/Gs.DevApp/bin/Debug/templeEasyCode/report/Dictionary.frd
new file mode 100644
index 0000000..47ae511
--- /dev/null
+++ b/DevApp/Gs.DevApp/bin/Debug/templeEasyCode/report/Dictionary.frd
@@ -0,0 +1,69 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<Dictionary>
+  <TableDataSource Name="zb" ReferenceName="Data.zb" DataType="System.Int32" Enabled="true">
+    <Column Name="z1" DataType="System.String" PropName="Column"/>
+    <Column Name="z2" DataType="System.String" PropName="Column"/>
+    <Column Name="z3" DataType="System.String" PropName="Column"/>
+    <Column Name="z4" DataType="System.String" PropName="Column"/>
+    <Column Name="z5" DataType="System.String" PropName="Column"/>
+    <Column Name="z6" DataType="System.String" PropName="Column"/>
+    <Column Name="z7" DataType="System.String" PropName="Column"/>
+    <Column Name="z8" DataType="System.String" PropName="Column"/>
+    <Column Name="z9" DataType="System.String" PropName="Column"/>
+    <Column Name="z10" DataType="System.String" PropName="Column"/>
+    <Column Name="z11" DataType="System.String" PropName="Column"/>
+    <Column Name="z12" DataType="System.String" PropName="Column"/>
+    <Column Name="z13" DataType="System.String" PropName="Column"/>
+    <Column Name="z14" DataType="System.String" PropName="Column"/>
+    <Column Name="z15" DataType="System.String" PropName="Column"/>
+    <Column Name="z16" DataType="System.String" PropName="Column"/>
+    <Column Name="z17" DataType="System.String" PropName="Column"/>
+    <Column Name="z18" DataType="System.String" PropName="Column"/>
+    <Column Name="z19" DataType="System.String" PropName="Column"/>
+    <Column Name="z20" DataType="System.String" PropName="Column"/>
+  </TableDataSource>
+  <TableDataSource Name="mx1" ReferenceName="Data.mx1" DataType="System.Int32" Enabled="true">
+    <Column Name="m1" DataType="System.String" PropName="Column"/>
+    <Column Name="m2" DataType="System.String" PropName="Column"/>
+    <Column Name="m3" DataType="System.String" PropName="Column"/>
+    <Column Name="m4" DataType="System.String" PropName="Column"/>
+    <Column Name="m5" DataType="System.String" PropName="Column"/>
+    <Column Name="m6" DataType="System.String" PropName="Column"/>
+    <Column Name="m7" DataType="System.String" PropName="Column"/>
+    <Column Name="m8" DataType="System.String" PropName="Column"/>
+    <Column Name="m9" DataType="System.String" PropName="Column"/>
+    <Column Name="m10" DataType="System.String" PropName="Column"/>
+    <Column Name="m11" DataType="System.String" PropName="Column"/>
+    <Column Name="m12" DataType="System.String" PropName="Column"/>
+    <Column Name="m13" DataType="System.String" PropName="Column"/>
+    <Column Name="m14" DataType="System.String" PropName="Column"/>
+    <Column Name="m15" DataType="System.String" PropName="Column"/>
+    <Column Name="m16" DataType="System.String" PropName="Column"/>
+    <Column Name="m17" DataType="System.String" PropName="Column"/>
+    <Column Name="m18" DataType="System.String" PropName="Column"/>
+    <Column Name="m19" DataType="System.String" PropName="Column"/>
+    <Column Name="m20" DataType="System.String" PropName="Column"/>
+  </TableDataSource>
+ <TableDataSource Name="mx2" ReferenceName="Data.mx2" DataType="System.Int32" Enabled="true">
+    <Column Name="m1" DataType="System.String" PropName="Column"/>
+    <Column Name="m2" DataType="System.String" PropName="Column"/>
+    <Column Name="m3" DataType="System.String" PropName="Column"/>
+    <Column Name="m4" DataType="System.String" PropName="Column"/>
+    <Column Name="m5" DataType="System.String" PropName="Column"/>
+    <Column Name="m6" DataType="System.String" PropName="Column"/>
+    <Column Name="m7" DataType="System.String" PropName="Column"/>
+    <Column Name="m8" DataType="System.String" PropName="Column"/>
+    <Column Name="m9" DataType="System.String" PropName="Column"/>
+    <Column Name="m10" DataType="System.String" PropName="Column"/>
+    <Column Name="m11" DataType="System.String" PropName="Column"/>
+    <Column Name="m12" DataType="System.String" PropName="Column"/>
+    <Column Name="m13" DataType="System.String" PropName="Column"/>
+    <Column Name="m14" DataType="System.String" PropName="Column"/>
+    <Column Name="m15" DataType="System.String" PropName="Column"/>
+    <Column Name="m16" DataType="System.String" PropName="Column"/>
+    <Column Name="m17" DataType="System.String" PropName="Column"/>
+    <Column Name="m18" DataType="System.String" PropName="Column"/>
+    <Column Name="m19" DataType="System.String" PropName="Column"/>
+    <Column Name="m20" DataType="System.String" PropName="Column"/>
+  </TableDataSource>
+</Dictionary>
diff --git a/DevApp/Gs.DevApp/bin/Debug/templeEasyCode/report/RptDemo.frx b/DevApp/Gs.DevApp/bin/Debug/templeEasyCode/report/RptDemo.frx
new file mode 100644
index 0000000..044cb57
--- /dev/null
+++ b/DevApp/Gs.DevApp/bin/Debug/templeEasyCode/report/RptDemo.frx
@@ -0,0 +1,57 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<Report ScriptLanguage="CSharp" ReportInfo.Created="09/10/2024 16:46:56" ReportInfo.Modified="10/07/2024 20:12:11" ReportInfo.CreatorVersion="2013.2.5.0">
+  <Dictionary>
+    <TableDataSource Name="Table1" ReferenceName="Data.Table1" DataType="System.Int32" Enabled="true">
+      <Column Name="z1" DataType="System.String" PropName="Column"/>
+      <Column Name="z2" DataType="System.String" PropName="Column"/>
+      <Column Name="z3" DataType="System.String" PropName="Column"/>
+      <Column Name="z4" DataType="System.String" PropName="Column"/>
+      <Column Name="z5" DataType="System.String" PropName="Column"/>
+      <Column Name="z6" DataType="System.String" PropName="Column"/>
+      <Column Name="z7" DataType="System.String" PropName="Column"/>
+      <Column Name="z8" DataType="System.String" PropName="Column"/>
+      <Column Name="z9" DataType="System.String" PropName="Column"/>
+      <Column Name="z10" DataType="System.String" PropName="Column"/>
+      <Column Name="z11" DataType="System.String" PropName="Column"/>
+      <Column Name="z12" DataType="System.String" PropName="Column"/>
+      <Column Name="z13" DataType="System.String" PropName="Column"/>
+      <Column Name="z14" DataType="System.String" PropName="Column"/>
+      <Column Name="z15" DataType="System.String" PropName="Column"/>
+      <Column Name="z16" DataType="System.String" PropName="Column"/>
+      <Column Name="z17" DataType="System.String" PropName="Column"/>
+      <Column Name="z18" DataType="System.String" PropName="Column"/>
+      <Column Name="z19" DataType="System.String" PropName="Column"/>
+      <Column Name="z20" DataType="System.String" PropName="Column"/>
+    </TableDataSource>
+    <TableDataSource Name="Table2" ReferenceName="Data.Table2" DataType="System.Int32" Enabled="true">
+      <Column Name="m1" DataType="System.String" PropName="Column"/>
+      <Column Name="m2" DataType="System.String" PropName="Column"/>
+      <Column Name="m3" DataType="System.String" PropName="Column"/>
+      <Column Name="m4" DataType="System.String" PropName="Column"/>
+      <Column Name="m5" DataType="System.String" PropName="Column"/>
+      <Column Name="m6" DataType="System.String" PropName="Column"/>
+      <Column Name="m7" DataType="System.String" PropName="Column"/>
+      <Column Name="m8" DataType="System.String" PropName="Column"/>
+      <Column Name="m9" DataType="System.String" PropName="Column"/>
+      <Column Name="m10" DataType="System.String" PropName="Column"/>
+      <Column Name="m11" DataType="System.String" PropName="Column"/>
+      <Column Name="m12" DataType="System.String" PropName="Column"/>
+      <Column Name="m13" DataType="System.String" PropName="Column"/>
+      <Column Name="m14" DataType="System.String" PropName="Column"/>
+      <Column Name="m15" DataType="System.String" PropName="Column"/>
+      <Column Name="m16" DataType="System.String" PropName="Column"/>
+      <Column Name="m17" DataType="System.String" PropName="Column"/>
+      <Column Name="m18" DataType="System.String" PropName="Column"/>
+      <Column Name="m19" DataType="System.String" PropName="Column"/>
+      <Column Name="m20" DataType="System.String" PropName="Column"/>
+    </TableDataSource>
+  </Dictionary>
+  <ReportPage Name="Page1" Guides="198.45,245.7">
+    <ReportTitleBand Name="ReportTitle1" Width="718.2" Height="37.8">
+      <TextObject Name="Text9" Left="217.35" Top="9.45" Width="330.75" Height="18.9" Text="鎭枩浣狅紝鍙互寮�濮嬭璁℃姤琛ㄥ暒" HorzAlign="Center" Font="瀹嬩綋, 12pt, style=Bold"/>
+    </ReportTitleBand>
+    <PageHeaderBand Name="PageHeader1" Top="41.8" Width="718.2" Height="37.8"/>
+    <DataBand Name="Data1" Top="83.6" Width="718.2" Height="37.8" Border.Lines="All" DataSource="Table2"/>
+    <PageFooterBand Name="PageFooter1" Top="125.4" Width="718.2" Height="122.85"/>
+  </ReportPage>
+</Report>

--
Gitblit v1.9.3