Example #1
0
    public FormListStructure GenerateLookupViewStructure(ExcelConfiguration conf, string viewName, string directoryPath)
    {
        FormListStructure frm = new FormListStructure();
        ExcelUIViewLookup view = GetLookupView(conf, viewName);
        if (view != null)
        {
            string[] tables = view.TableName.Split(',');
            ExcelTableSpec tableSpec = GetTableSpec(conf, tables[0],0);

            string gridStr = "";
            string buttonStr = "";

            string select = "";
            string from = tables[0];
            string where = " 1=1 ";
            string sql = "";
            string dataSourceStr = "";
            string dsSelectParam = "";

            #region Gen Grid
                gridStr = @"
        <dx:ASPxGridView ID=""view" + view.ViewName + @""" runat=""server"" Width=""100%""
         Styles-AlternatingRow-BackColor=""White"" Styles-Row-BackColor=""#D9EDF7""
        AutoGenerateColumns=""False"" ClientInstanceName=""view" + view.ViewName + @"""
        DataSourceID=""ds" + view.ViewName + @""" KeyFieldName=""" + GetPrimaryKeyName(tableSpec) + @"""  Theme=""Metropolis"">
            <Columns>

            <dx:GridViewCommandColumn
        ShowSelectButton =""True""
        SelectAllCheckboxMode=""Page"" ShowClearFilterButton=""True""
        ShowDeleteButton=""False"" ShowSelectCheckbox=""False"" ButtonType=""Image"" VisibleIndex=""30"">
            </dx:GridViewCommandColumn>
            <dx:GridViewDataTextColumn FieldName=""" + GetPrimaryKeyName(tableSpec) + @""" ReadOnly=""True""  Visible=""False"" VisibleIndex=""2"">
                    <EditFormSettings Visible=""False"" />
            </dx:GridViewDataTextColumn>
        ";

                int colNum = 2;
                foreach (var fd in view.Items)
                {
                    colNum++;
                    gridStr += @" <dx:GridViewDataTextColumn Caption=""" + fd.Caption + @""" FieldName=""" + GetOnlyFieldName(fd) + @""" VisibleIndex=""" + colNum + @"""></dx:GridViewDataTextColumn>
        ";
                }

                gridStr += @"</Columns>
            <Settings ShowFilterRow=""True"" ShowGroupPanel=""False"" />
            <SettingsBehavior ConfirmDelete=""true"" AllowSelectSingleRowOnly=""true"" />
        <SettingsCommandButton>
            <SelectButton>
                <Image ToolTip=""เลือก"" Url=""Images/select.png"" />
            </SelectButton>
        </SettingsCommandButton>

        <ClientSideEvents SelectionChanged=""grid_SelectionChanged"" />
        </dx:ASPxGridView>
        ";

            #endregion

            #region Gen sql dataSourceStr

                if (view.SQLSelect == null || view.SQLSelect == "")
                {
                    foreach (var fd in tableSpec.Fields)
                    {
                        if (fd.FieldPrimaryKey || fd.FieldForeignKey)
                        {
                            select += tableSpec.TableName + "." + fd.FieldName + "\r\n,";
                        }
                    }
                    if (tables.Length > 1)
                    {
                        for (int i = 1; i < tables.Length; ++i)
                        {
                            from += GetJoinStr(conf, tables[0], tables[i]);
                        }
                    }
                    foreach (var item in view.Items)
                    {
                        if (item.DataBinding != null && item.DataBinding != "")
                        {
                            select += item.DataBinding + "\r\n,";
                        }
                    }
                    select = select.Substring(0, select.Length - 1);

                    if (view.InputParameters != null && view.InputParameters != "")
                    {
                        string[] fds = view.InputParameters.Split(',');
                        foreach (var f in fds)
                        {
                            where += " AND " + f + "=@" + f.Substring(f.IndexOf('.') + 1);
                            dsSelectParam += "<asp:Parameter Name=\"" + f.Substring(f.IndexOf('.') + 1) + "\" Type=\"Int32\" />";
                        }
                    }

                    if (view.FilterParameters != null && view.FilterParameters != "")
                    {
                        string[] fds = view.FilterParameters.Split(',');
                        foreach (var f in fds)
                        {
                            where += " AND " + f + "=@" + f.Substring(f.IndexOf('.') + 1);
                            dsSelectParam += "<asp:Parameter Name=\"" + f.Substring(f.IndexOf('.') + 1) + "\" Type=\"Int32\" />";
                        }
                    }
                    sql = "select " + select + " from " + from + " where " + where;
                }
                else
                {
                    sql = view.SQLSelect;
                    if (view.SQLSelectParams != null && view.SQLSelectParams != "")
                    {
                        string[] fds = view.SQLSelectParams.Split(',');
                        foreach (var f in fds)
                        {
                            dsSelectParam += "<asp:Parameter Name=\"" + f.Substring(f.IndexOf('.') + 1) + "\" Type=\"Int32\" />";
                        }
                    }
                }
            //DefaultConnection
            /*
             <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:DefaultConnection %>"
            DeleteCommand="DELETE FROM [COMMON_MASTER_ORGANIZE] WHERE [ORGANIZE_ID] = @PK_ID"
            SelectCommand="SELECT * FROM [COMMON_MASTER_ORGANIZE]"
            <DeleteParameters>
                <asp:Parameter Name="ORGANIZE_ID" Type="Int32" />
            </DeleteParameters>
             </asp:SqlDataSource>
             */
            dataSourceStr = @"<asp:SqlDataSource ID=""ds" + view.ViewName + @""" runat=""server"" ConnectionString=""<%$ ConnectionStrings:DefaultConnection %>""
            DeleteCommand=""DELETE FROM " + tables[0] + @" WHERE [" + GetPrimaryKeyName(tableSpec) + @"] = @" + GetPrimaryKeyName(tableSpec) + @"""
            SelectCommand=""" + sql + @""" >
            <DeleteParameters>
                <asp:Parameter Name=""" + GetPrimaryKeyName(tableSpec) + @""" Type=""Int32"" />
            </DeleteParameters>
        <SelectParameters>
        " + dsSelectParam + @"
        </SelectParameters>
             </asp:SqlDataSource>";
            #endregion

            #region Gen PopulateData
            //frm.PopulateCS += "//Grid \r\n";
            //frm.PopulateCS += "ds" + view.ViewName + ".SelectParameters.Clear();\r\n";
            frm.InitCS += "//Grid " + view.ViewName + " \r\n";
            frm.InitCS += "ds" + view.ViewName + ".SelectParameters.Clear();\r\n";
            if (view.InputParameters != null && view.InputParameters != "")
            {
                string[] fds = view.InputParameters.Split(',');
                foreach (var f in fds)
                {
                    frm.VariableDeclareCS += "string input" + f.Substring(f.IndexOf('.') + 1) + "=\"-1\";\r\n";
                    //frm.PopulateCS += "ds" + view.ViewName + ".SelectParameters.Add(\"" + f.Substring(f.IndexOf('.') + 1) + "\", System.Data.DbType.Int32, input" + f.Substring(f.IndexOf('.') + 1) + ");\r\n";
                    frm.InitCS += @"        if (Request.QueryString[""" + f.Substring(f.IndexOf('.') + 1) + @"""] != null && Request.QueryString[""" + f.Substring(f.IndexOf('.') + 1) + @"""] != ""-1"")
        {
            input" + f.Substring(f.IndexOf('.') + 1) + @" = Request.QueryString[""" + f.Substring(f.IndexOf('.') + 1) + @"""];
        }
        ";
                    frm.InitCS += "ds" + view.ViewName + ".SelectParameters.Add(\"" + f.Substring(f.IndexOf('.') + 1) + "\", System.Data.DbType.Int32, input" + f.Substring(f.IndexOf('.') + 1) + ");\r\n";

                }
            }
            if (view.FilterParameters != null && view.FilterParameters != "")
            {
                string[] fds = view.FilterParameters.Split(',');
                foreach (var f in fds)
                {
                    frm.VariableDeclareCS += "string param" + f.Substring(f.IndexOf('.') + 1) + "=\"-1\";\r\n";
                    //frm.PopulateCS += "ds" + view.ViewName + ".SelectParameters.Add(\"" + f.Substring(f.IndexOf('.') + 1) + "\", System.Data.DbType.Int32, param" + f.Substring(f.IndexOf('.') + 1) + ");\r\n";
                    frm.InitCS += "ds" + view.ViewName + ".SelectParameters.Add(\"" + f.Substring(f.IndexOf('.') + 1) + "\", System.Data.DbType.Int32, param" + f.Substring(f.IndexOf('.') + 1) + ");\r\n";
                }
            }
            if (view.SQLSelectParams != null && view.SQLSelectParams != "")
            {
                string[] fds = view.SQLSelectParams.Split(',');
                foreach (var f in fds)
                {
                    frm.VariableDeclareCS += "string param" + f.Substring(f.IndexOf('.') + 1) + "=\"-1\";\r\n";
                    frm.InitCS += "ds" + view.ViewName + ".SelectParameters.Add(\"" + f.Substring(f.IndexOf('.') + 1) + "\", System.Data.DbType.Int32, param" + f.Substring(f.IndexOf('.') + 1) + ");\r\n";
                }
            }
            #endregion

            #region Gen button
            //buttonStr += @"<input type=""button"" id=""btn" + view.ViewName + @"_new"" class='btn btn-primary' value=' Add ' onclick="""" />";
            #endregion

            frm.HtmlTag = @"<div>
        " + gridStr + @"
        </div>";
            frm.DataSourceTag = dataSourceStr;
            frm.TopButtonTag = buttonStr;

            return frm;
        }
        else
        {

            return frm;
        }
    }
Example #2
0
    public FormListStructure GenerateListViewStructure(ExcelConfiguration conf, string viewName, string directoryPath, bool isInListView)
    {
        FormListStructure frm = new FormListStructure();
        ExcelUIViewList view = GetListView(conf, viewName);
        if (view != null)
        {

            string[] tables = view.TableName.Split(',');
            ExcelTableSpec tableSpec = GetTableSpec(conf, tables[0],0);

            string gridStr = "";
            string buttonStr = "";

            string select = "";
            string from = tables[0];
            string where = " 1=1 ";
            string sql = "";
            string dataSourceStr = "";
            string dsSelectParam = "";

            #region Gen Grid
                var editView = GetDetailView(conf, view.EditView);
                try
                {
                    string xx = editView.ViewName;
                }
                catch (Exception ex)
                {
                    throw new ApplicationException("View " + view.ViewName + " ต้องการ View " + view.EditView + " ** แต่ไม่มี", ex);
                }
                var linkDetail = @"<a target=""_blank"" onclick=""OpenChildDetail('fancyBox" + view.ViewName + @"','" + view.EditView + @".aspx?" + editView.GetHyperlinkRequest() + @"', view" + view.ViewName + @");""><img src=""images/edit.png"" style=""border:none"" alt=""edit"" /></a>";
                if (isInListView)
                {
                    linkDetail = @"<a target=""_self"" href=""" + view.EditView + @".aspx?" + editView.GetHyperlinkRequest() + @"""><img src=""images/edit.png"" style=""border:none"" alt=""edit"" /></a>";

                }
            gridStr = @"

        <dx:ASPxGridView ID=""view" + view.ViewName + @""" runat=""server"" Width=""100%""
        AutoGenerateColumns=""False"" Styles-AlternatingRow-BackColor=""White"" Styles-Row-BackColor=""#D9EDF7""
        DataSourceID=""ds" + view.ViewName + @""" KeyFieldName=""" + GetPrimaryKeyName(tableSpec) + @"""  ClientInstanceName=""view" + view.ViewName + @""" Theme=""Metropolis"">
            <Columns>

            <dx:GridViewCommandColumn SelectAllCheckboxMode=""Page"" ShowClearFilterButton=""True""
        ShowDeleteButton=""True"" ShowSelectCheckbox=""False"" ButtonType=""Image"" VisibleIndex=""0"">
            </dx:GridViewCommandColumn>
            <dx:GridViewDataTextColumn FieldName=""" + GetPrimaryKeyName(tableSpec) + @""" ReadOnly=""True""  Visible=""False"" VisibleIndex=""2"">
                    <EditFormSettings Visible=""False"" />
            </dx:GridViewDataTextColumn>
            <dx:GridViewDataTextColumn VisibleIndex=""1"" Caption="""">
                <DataItemTemplate>
                    " + linkDetail + @"
                </DataItemTemplate>
            </dx:GridViewDataTextColumn>
        ";

                int colNum = 2;
                foreach (var fd in view.Items)
                {

                    colNum++;
                    var f = GetFieldSpec(conf, tables[0], fd.DataBinding);
                    //frm.ValidateCS += GetValidateString(conf, f.FieldName);
                    frm.FomattingCS += GetFormattingListString(view, fd);
                    try
                    {
                        if (f==null || f.FieldType == ExcelEntityFieldType.String)
                        {
                            gridStr += @"
        <dx:GridViewDataTextColumn Caption=""" + fd.Caption + @""" FieldName=""" + GetOnlyFieldName(fd) + @""" VisibleIndex=""" + colNum + @""">
        </dx:GridViewDataTextColumn>
        ";
                        }
                        else if (f.FieldType == ExcelEntityFieldType.Number)
                        {
                            gridStr += @"
        <dx:GridViewDataSpinEditColumn Caption=""" + fd.Caption + @""" FieldName=""" + GetOnlyFieldName(fd) + @""" VisibleIndex=""" + colNum + @""">

        </dx:GridViewDataSpinEditColumn>
        ";
                        }
                        else if (f.FieldType == ExcelEntityFieldType.DateTime)
                        {
                            gridStr += @"
        <dx:GridViewDataDateColumn Caption=""" + fd.Caption + @""" FieldName=""" + GetOnlyFieldName(fd) + @""" VisibleIndex=""" + colNum + @""">
        </dx:GridViewDataDateColumn>
        ";
                        }
                        else if (f.FieldType == ExcelEntityFieldType.Boolean)
                        {
                            gridStr += @"
        <dx:GridViewDataCheckColumn Caption=""" + fd.Caption + @""" FieldName=""" + GetOnlyFieldName(fd) + @""" VisibleIndex=""" + colNum + @""">
        </dx:GridViewDataCheckColumn>
        ";
                        }
                    }
                    catch (Exception ex)
                    {
                        throw new ApplicationException("View " + view.ViewName + " ต้องการใช้ field [" + fd.DataBinding + "] แต่ไม่มีในตาราง [" + GetOnlyTableName(fd)+"]", ex);
                    }
                }

                gridStr += @"</Columns>
            <Settings ShowFilterRow=""True"" ShowFilterRowMenu=""true"" ShowHeaderFilterButton=""false"" ShowGroupPanel=""False"" />
            <SettingsBehavior ConfirmDelete=""true"" AllowSelectSingleRowOnly=""true"" />
            <SettingsText ConfirmDelete=""ท่านต้องการลบรายการนี้หรือไม่?"" />
        <SettingsCommandButton>
            <DeleteButton>
                <Image ToolTip=""ลบ"" Url=""Images/del.png"" />
            </DeleteButton>
        </SettingsCommandButton>
        </dx:ASPxGridView>
        <a id=""fancyBox" + view.ViewName + @""" class='fancyBox'  style=""display:none""></a>
        ";

            #endregion

            #region Gen sql dataSourceStr
                if (view.SQLSelect == null || view.SQLSelect == "")
                {
                    ExcelTableSpec tb = GetTableSpec(conf, tables[0], 0);
                    foreach (var fd in tb.Fields)
                    {
                        if (fd.FieldPrimaryKey || fd.FieldForeignKey)
                        {
                            select += tb.TableName + "." + fd.FieldName + "\r\n,";
                        }
                    }
                    if (tables.Length > 1)
                    {
                        for (int i = 1; i < tables.Length; ++i)
                        {
                            from += GetJoinStr(conf, tables[0], tables[i]);
                        }
                    }
                    foreach (var item in view.Items)
                    {
                        if (item.DataBinding != null && item.DataBinding != "")
                        {
                            select += item.DataBinding + "\r\n,";
                        }
                    }
                    select = select.Substring(0, select.Length - 1);

                    if (view.InputParameters != null && view.InputParameters != "")
                    {
                        string[] fds = view.InputParameters.Split(',');
                        foreach (var f in fds)
                        {
                            where += " AND " + f + "=@" + f.Substring(f.IndexOf('.') + 1);
                            dsSelectParam += "<asp:Parameter Name=\"" + f.Substring(f.IndexOf('.') + 1) + "\" Type=\"Int32\" />";
                        }
                    }

                    if (view.FilterParameters != null && view.FilterParameters != "")
                    {
                        string[] fds = view.FilterParameters.Split(',');
                        foreach (var f in fds)
                        {
                            where += " AND " + f + "=@" + f.Substring(f.IndexOf('.') + 1);
                            dsSelectParam += "<asp:Parameter Name=\"" + f.Substring(f.IndexOf('.') + 1) + "\" Type=\"Int32\" />";
                        }
                    }
                    sql = "select " + select + " from " + from + " where " + where;
                }
                else
                {
                    sql = view.SQLSelect;
                }
            //DefaultConnection
            /*
             <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:DefaultConnection %>"
            DeleteCommand="DELETE FROM [COMMON_MASTER_ORGANIZE] WHERE [ORGANIZE_ID] = @PK_ID"
            SelectCommand="SELECT * FROM [COMMON_MASTER_ORGANIZE]"
            <DeleteParameters>
                <asp:Parameter Name="ORGANIZE_ID" Type="Int32" />
            </DeleteParameters>
             </asp:SqlDataSource>
             */
            dataSourceStr = @"
        <asp:SqlDataSource ID=""ds" + view.ViewName + @""" runat=""server"" ConnectionString=""<%$ ConnectionStrings:DefaultConnection %>""
            DeleteCommand=""DELETE FROM " + tables[0] + @" WHERE [" + GetPrimaryKeyName(tableSpec) + @"] = @" + GetPrimaryKeyName(tableSpec) + @"""
            SelectCommand=""" + sql + @""" >
            <DeleteParameters>
                <asp:Parameter Name=""" + GetPrimaryKeyName(tableSpec) + @""" Type=""Int32"" />
            </DeleteParameters>
        <SelectParameters>
        " + dsSelectParam + @"
        </SelectParameters>
             </asp:SqlDataSource>";
            #endregion

            #region Gen PopulateData
            //frm.PopulateCS += "//Grid \r\n";
            //frm.PopulateCS += "ds" + view.ViewName + ".SelectParameters.Clear();\r\n";
            frm.InitCS += "//Grid "+ view.ViewName+" \r\n";
            frm.InitCS += "ds" + view.ViewName + ".SelectParameters.Clear();\r\n";
            if (view.InputParameters != null && view.InputParameters != "")
            {
                string[] fds = view.InputParameters.Split(',');
                foreach (var f in fds)
                {
                    frm.VariableDeclareCS += "string input" + f.Substring(f.IndexOf('.') + 1) + "=\"-1\";\r\n";
                    //frm.PopulateCS += "ds" + view.ViewName + ".SelectParameters.Add(\"" + f.Substring(f.IndexOf('.') + 1) + "\", System.Data.DbType.Int32, input" + f.Substring(f.IndexOf('.') + 1) + ");\r\n";
                    frm.InitCS += @"        if (Request.QueryString[""" + f.Substring(f.IndexOf('.') + 1) + @"""] != null && Request.QueryString[""" + f.Substring(f.IndexOf('.') + 1) + @"""] != ""-1"")
        {
            input" + f.Substring(f.IndexOf('.') + 1) + @" = Request.QueryString[""" + f.Substring(f.IndexOf('.') + 1) + @"""];
        }
        ";
                    frm.InitCS += "ds" + view.ViewName + ".SelectParameters.Add(\"" + f.Substring(f.IndexOf('.') + 1) + "\", System.Data.DbType.Int32, input" + f.Substring(f.IndexOf('.') + 1) + ");\r\n";

                }
            }
            if (view.FilterParameters != null && view.FilterParameters != "")
            {
                string[] fds = view.FilterParameters.Split(',');
                foreach (var f in fds)
                {
                    frm.VariableDeclareCS += "string param" + f.Substring(f.IndexOf('.') + 1) + "=\"-1\";\r\n";
                    //frm.PopulateCS += "ds" + view.ViewName + ".SelectParameters.Add(\"" + f.Substring(f.IndexOf('.') + 1) + "\", System.Data.DbType.Int32, param" + f.Substring(f.IndexOf('.') + 1) + ");\r\n";
                    frm.InitCS += "ds" + view.ViewName + ".SelectParameters.Add(\"" + f.Substring(f.IndexOf('.') + 1) + "\", System.Data.DbType.Int32, param" + f.Substring(f.IndexOf('.') + 1) + ");\r\n";
                }
            }
            if (view.SQLSelectParams != null && view.SQLSelectParams != "")
            {
                string[] fds = view.SQLSelectParams.Split(',');
                foreach (var f in fds)
                {
                    frm.VariableDeclareCS += "string param" + f.Substring(f.IndexOf('.') + 1) + "=\"-1\";\r\n";
                    frm.InitCS += "ds" + view.ViewName + ".SelectParameters.Add(\"" + f.Substring(f.IndexOf('.') + 1) + "\", System.Data.DbType.Int32, param" + f.Substring(f.IndexOf('.') + 1) + ");\r\n";
                }
            }
            #endregion

            #region Gen button
            buttonStr += "";// @"<input type=""button"" id=""btn" + view.ViewName + @"_new"" class='btn btn-primary' value=' Add ' onclick=""location='" + view.EditView + ".aspx?id=-1';\" />";
            #endregion

            frm.HtmlTag =  @"<div>
        " + gridStr + @"
        </div>";
            frm.DataSourceTag = dataSourceStr;
            frm.TopButtonTag = "";// buttonStr;

            return frm;
        }
        else
        {

            return frm;
        }
    }