Exemplo n.º 1
0
 /// <summary>
 /// Lấy dữ liệu để phục vụ việc cấu hình
 /// </summary>
 private void LoadDataForConfig()
 {
     try
     {
         if (OneManyForm.formInfo == null)
         {
             OneManyForm.formInfo = FormController.GetInstance().GetForm(this.GridPanelName + "OneManyForm");
         }
         List <OneManyFormInfo> rs = OneManyFormController.GetInstance()
                                     .GetAll(this.GridPanelName + "OneManyForm", 1);
         List <string> table =
             (from t in SoftCore.Util.GetInstance().GetRelationTable(OneManyForm.formInfo.TableName)
              where rs.Where(p => p.TableName == t).Count() == 0
              select t).ToList();
         foreach (string item in table)
         {
             Ext.Net.ListItem list = new Ext.Net.ListItem(item, item);
             cbTable.Items.Add(list);
         }
     }
     catch (Exception ex)
     {
         Dialog.ShowNotification("OneManyForm / LoadDataForConfig() = " + ex.Message);
     }
 }
Exemplo n.º 2
0
    /// <summary>
    /// autosave cho store chứa thông tin cột
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void HandleColumnChanges(object sender, BeforeStoreChangedEventArgs e)
    {
        ChangeRecords <OneManyFormInfo> columns = e.DataHandler.ObjectData <OneManyFormInfo>();

        foreach (OneManyFormInfo item in columns.Updated)
        {
            lock (lockObj)
            {
                OneManyFormController.GetInstance().Update(item);
            }
            if (StoreTableDetailInfo.UseIdConfirmation)
            {
                e.ConfirmationList.ConfirmRecord(item.ID.ToString());
            }
        }
        e.Cancel = true;
    }
Exemplo n.º 3
0
        /// <summary>
        /// sinh các detail table nằm trong tab
        /// </summary>
        public void GenerateDetailTable()
        {
            Ext.Net.TabPanel tab = new TabPanel();
            tab.Border           = false;
            tab.ID               = this.ID + "TabPanel";
            tab.AnchorHorizontal = "100%";
            tab.Height           = 170;
            tab.EnableTabScroll  = true;
            tab.Plugins.Add(new TabScrollerMenu()
            {
                PageSize = 30,
                Width    = new Unit(500),
            });
            List <OneManyFormInfo> rs = OneManyFormController.GetInstance()
                                        .GetAll(this.GridPanelName + "OneManyForm", 1);
            int count = 0;

            foreach (OneManyFormInfo item in rs)
            {
                Control ct = this.Page.LoadControl("../Base/MiniGridPanel/MiniGrid.ascx");
                ct.ID = this.GridPanelName + "_OneManyForm_" + item.TableName; //Tên của Grid được lưu trong CSDL
                GridTable gridTable = ct as GridTable;
                gridTable.Height = 150;
                gridTable.Width  = OneManyForm.Width;
                //gridTable
                gridTable.OutSideQuery = item.ForeignKey;
                count++;
                Ext.Net.Panel panel = new Ext.Net.Panel(count + "." + item.Title);
                panel.ID = "pnl" + item.TableName;
                panel.AnchorHorizontal = "100%";
                panel.Border           = false;

                Ext.Net.Container c = new Container();
                c.AnchorHorizontal = "100%";
                c.Height           = 160;
                c.Layout           = "Form";
                c.ContentControls.Add(ct);
                //  c.Items.Add(gridTable.GetGridPanel());
                panel.Items.Add(c);

                tab.Items.Add(panel);
            }

            OneManyForm.AddDetailTable(tab, this.GridPanelName + "OneManyForm");
        }
Exemplo n.º 4
0
 protected void btnAddConfig_Click(object sender, DirectEventArgs e)
 {
     try
     {
         OneManyFormInfo info = new OneManyFormInfo();
         info.Title           = txtTitle.Text;
         info.TableName       = cbTable.SelectedItem.Value;
         info.Order           = 0;
         info.Visible         = chkVisible.Checked;
         info.ForeignKey      = cbForeignKey.SelectedItem.Value;
         info.OneManyFormName = this.GridPanelName + "OneManyForm";
         OneManyFormController.GetInstance().Add(info);
     }
     catch (Exception ex)
     {
         Dialog.ShowError(ex.Message);
     }
 }
Exemplo n.º 5
0
        private void InsertDetailTableValue(List <MiniGridData> miniGridDataList, string ForeignKeyValue)
        {
            List <OneManyFormInfo> formList =
                OneManyFormController.GetInstance().GetAll(this.GridPanelName + "OneManyForm", 1);

            //trong chuối json đã có sẵn tên cột, chỉ cần replace lại là ok
            foreach (var item in miniGridDataList)
            {
                if (!string.IsNullOrEmpty(item.JsonData))
                {
                    string          tableName = item.MiniGridName.Replace(this.GridPanelName + "_OneManyForm_", "");
                    OneManyFormInfo frmTmp    =
                        (from t in formList where t.TableName == tableName select t).FirstOrDefault();
                    string sqlUpdate = "update {1} set {0} where " + frmTmp.PrimaryKey + " = N'";
                    string sqlInsert = "insert into {2}({0}) values ({1})";
                    string checkSql  = "";
                    //cần phải viết lại hàm tách
                    string[] tmp = item.JsonData.Replace("[", "").Replace("]", "").Replace("},{", "#").Replace("{", "")
                                   .Replace("}", "").Replace("\"", "").Split('#');
                    //Chạy để insert và update từng bản ghi một
                    foreach (var jsonRecord in tmp)
                    {
                        string[] colArr       = jsonRecord.Split(',');
                        string   columnInsert = "";
                        string   valueInsert  = "";
                        string   valueUpdate  = "";
                        foreach (var col in colArr)
                        {
                            string[] i = col.Split(':');
                            //fix lại định dạng ngày tháng, [nên chuyển thành regex để bắt lỗi]
                            if (i[1].Contains("-") && i[1].Length == 13)
                            {
                                i[1] = i[1].Replace("T00", "");
                            }

                            if (i[0] != frmTmp.PrimaryKey)
                            {
                                valueUpdate += "[" + i[0] + "] = N'" + i[1] + "',";
                                //Khóa chính mặc định là tự động tăng, nếu muốn ko tự động tăng thì phải tạo thêm 1 cấu hình
                                columnInsert += "[" + i[0] + "],";
                                valueInsert  += "N'" + i[1] + "',";
                            }
                            else
                            {
                                if (frmTmp.PrKeyIsAutoIncrement == false)
                                {
                                    columnInsert += "[" + i[0] + "],";
                                    valueInsert  += "N'" + i[1] + "',";
                                }

                                sqlUpdate += i[1] + "'";
                                checkSql   = "select top 1 * from " + tableName + " where " + frmTmp.PrimaryKey +
                                             " = N'" + i[1] + "'";
                            }
                        }

                        if (DataHandler.GetInstance().ExecuteScalar(checkSql) != null)
                        {
                            valueUpdate +=
                                "[" + frmTmp.ForeignKey + "] = N'" + ForeignKeyValue +
                                "'"; //Thêm cột khóa ngoại vào câu lệnh insert
                            sqlUpdate = string.Format(sqlUpdate, valueUpdate, tableName);
                            DataHandler.GetInstance().ExecuteNonQuery(sqlUpdate);
                        }
                        else
                        {
                            columnInsert += "[" + frmTmp.ForeignKey + "]";
                            valueInsert  += "N'" + ForeignKeyValue + "'";
                            sqlInsert     = string.Format(sqlInsert, columnInsert, valueInsert, tableName);
                            DataHandler.GetInstance().ExecuteNonQuery(sqlInsert);
                        }

                        //    Dialog.ShowNotification(sqlUpdate + "   " + sqlInsert);
                    }
                }
            }
        }