Ejemplo n.º 1
0
    protected void bt_Save_Click(object sender, EventArgs e)
    {
        UD_TableListBLL bll;

        if (ViewState["TableID"] == null)
        {
            bll = new UD_TableListBLL();
        }
        else
        {
            bll = new UD_TableListBLL((Guid)ViewState["TableID"]);
        }

        UC_DetailView1.GetData(bll.Model);

        if (ViewState["TableID"] == null)
        {
            bll.Add();
        }
        else
        {
            bll.Update();
        }
        Response.Redirect("TableDetail.aspx?TableID=" + bll.Model.ID.ToString());
    }
    private void BindGrid()
    {
        UD_TableListBLL bll = new UD_TableListBLL((Guid)ViewState["TableID"]);
        gv_List.BindGrid<UD_ModelFields>( bll.GetModelFields());

        if (bll.Model.ExtFlag=="N")        bt_OK.Visible = false;
    }
    protected void rbl_RelationType_SelectedIndexChanged(object sender, EventArgs e)
    {
        switch (rbl_RelationType.SelectedValue)
        {
        case "1":
            tr_1.Visible = true;
            tr_2.Visible = false;
            ddl_RelationTableName.DataTextField  = "Name";
            ddl_RelationTableName.DataValueField = "TableName";
            ddl_RelationTableName.DataSource     = DictionaryBLL.Dictionary_Type_GetAllList();
            ddl_RelationTableName.DataBind();
            break;

        case "2":
            tr_1.Visible = true;
            tr_2.Visible = true;
            ddl_RelationTableName.DataTextField  = "DisplayName";
            ddl_RelationTableName.DataValueField = "Name";
            ddl_RelationTableName.DataSource     = UD_TableListBLL.GetModelList("");
            ddl_RelationTableName.DataBind();
            ddl_RelationTableName_SelectedIndexChanged(null, null);
            break;

        case "3":
            tr_1.Visible = false;
            tr_2.Visible = false;
            break;
        }
    }
Ejemplo n.º 4
0
 private void BindDropDown()
 {
     ddl_TableName.DataSource = UD_TableListBLL.GetModelList
                                    ("ID IN(SELECT TableID FROM MCS_Reports.dbo.Rpt_DataSetTables WHERE DataSet='" + ViewState["ID"].ToString() + "')");
     ddl_TableName.DataBind();
     if (ddl_TableName.Items.Count > 0)
     {
         ddl_TableName_SelectedIndexChanged(null, null);
     }
 }
Ejemplo n.º 5
0
    protected void bt_AddToDataSet_Click(object sender, EventArgs e)
    {
        IList <Rpt_DataSetFields> datasetfields = new Rpt_DataSetBLL((Guid)ViewState["ID"]).GetFields();
        int maxsortid = 0;

        if (datasetfields.Count > 0)
        {
            maxsortid = datasetfields.Max(p => p.ColumnSortID);
        }

        foreach (ListItem item in cbxl_Fields.Items)
        {
            if (item.Selected)
            {
                Guid fieldid = new Guid(item.Value);

                UD_ModelFields f = new UD_ModelFieldsBLL(fieldid).Model;
                if (f != null)
                {
                    string fieldname = new UD_TableListBLL(f.TableID).Model.ModelClassName + "_" + f.FieldName;
                    if (datasetfields.FirstOrDefault(p => p.FieldName == fieldname) != null)
                    {
                        continue;
                    }

                    maxsortid++;

                    Rpt_DataSetFieldsBLL fieldbll = new Rpt_DataSetFieldsBLL();
                    fieldbll.Model.DataSet        = (Guid)ViewState["ID"];
                    fieldbll.Model.FieldID        = f.ID;
                    fieldbll.Model.FieldName      = fieldname;
                    fieldbll.Model.DisplayName    = f.DisplayName;
                    fieldbll.Model.DataType       = f.DataType;
                    fieldbll.Model.IsComputeField = "N";
                    fieldbll.Model.ColumnSortID   = maxsortid;

                    if (f.RelationType == 1 || f.RelationType == 2)
                    {
                        fieldbll.Model.DisplayMode = 2;
                    }
                    else
                    {
                        fieldbll.Model.DisplayMode = 1;
                    }

                    fieldbll.Model.Description = f.Description;
                    fieldbll.Add();
                }
            }
        }

        BindGrid();
        new Rpt_DataSetBLL((Guid)ViewState["ID"]).ClearCache();
    }
    private void BindGrid()
    {
        UD_TableListBLL bll = new UD_TableListBLL((Guid)ViewState["TableID"]);

        gv_List.BindGrid <UD_ModelFields>(bll.GetModelFields());

        if (bll.Model.ExtFlag == "N")
        {
            bt_OK.Visible = false;
        }
    }
    private void BindDropDown()
    {
        ddl_TableName.DataSource = UD_TableListBLL.GetModelList
                                       ("ID IN(SELECT TableID FROM MCS_Reports.dbo.Rpt_DataSetTables WHERE DataSet='" + ViewState["ID"].ToString() + "')");
        ddl_TableName.DataBind();
        ddl_TableName_SelectedIndexChanged(null, null);

        ddl_Param.DataSource = new Rpt_DataSetBLL((Guid)ViewState["ID"]).GetParams();
        ddl_Param.DataBind();
        if (ddl_Param.Items.Count == 0)
        {
            rbl_ValueFrom.SelectedValue = "M";
            rbl_ValueFrom.Enabled       = false;
        }
    }
Ejemplo n.º 8
0
    private void BindGrid()
    {
        string condition = "";

        if (tbx_Find.Text != "")
        {
            condition = "UD_TableList.Name like '%" + tbx_Find.Text + "%' OR UD_TableList.DisplayName like '%" + tbx_Find.Text + "%' OR UD_TableList.ModelName like '%" + tbx_Find.Text + "%'";
        }

        IList <UD_TableList> source = UD_TableListBLL.GetModelList(condition);

        gv_List.PageIndex        = (int)ViewState["PageIndex"];
        gv_List.TotalRecordCount = source.Count;

        gv_List.BindGrid <UD_TableList>(source);
    }
    private void BindDropDown()
    {
        if (ViewState["TableName"] != null)
        {
            IList <UD_TableList> tablelist = UD_TableListBLL.GetModelList("Name='" + ViewState["TableName"].ToString() + "'");

            if (tablelist.Count > 0)
            {
                ViewState["TableID"] = tablelist[0].ID;
                IList <UD_ModelFields> fieldlist = UD_ModelFieldsBLL.GetModelList("Tableid='" + tablelist[0].ID + "'");
                ddl_FieldName.DataSource     = fieldlist;
                ddl_FieldName.DataTextField  = "DisplayName";
                ddl_FieldName.DataValueField = "ID";
                ddl_FieldName.DataBind();
                ddl_FieldName.Items.Insert(0, new ListItem("所有", "0"));
            }
        }
    }
    protected void bt_AddToDataSet_Click(object sender, EventArgs e)
    {
        IList<Rpt_DataSetFields> datasetfields = new Rpt_DataSetBLL((Guid)ViewState["ID"]).GetFields();
        int maxsortid = 0;
        if (datasetfields.Count > 0) maxsortid = datasetfields.Max(p => p.ColumnSortID);

        foreach (ListItem item in cbxl_Fields.Items)
        {
            if (item.Selected)
            {
                Guid fieldid = new Guid(item.Value);

                UD_ModelFields f = new UD_ModelFieldsBLL(fieldid).Model;
                if (f != null)
                {
                    string fieldname = new UD_TableListBLL(f.TableID).Model.ModelClassName + "_" + f.FieldName;
                    if (datasetfields.FirstOrDefault(p => p.FieldName == fieldname) != null) continue;

                    maxsortid++;

                    Rpt_DataSetFieldsBLL fieldbll = new Rpt_DataSetFieldsBLL();
                    fieldbll.Model.DataSet = (Guid)ViewState["ID"];
                    fieldbll.Model.FieldID = f.ID;
                    fieldbll.Model.FieldName = fieldname;
                    fieldbll.Model.DisplayName = f.DisplayName;
                    fieldbll.Model.DataType = f.DataType;
                    fieldbll.Model.IsComputeField = "N";
                    fieldbll.Model.ColumnSortID = maxsortid;

                    if (f.RelationType == 1 || f.RelationType == 2)
                        fieldbll.Model.DisplayMode = 2;
                    else
                        fieldbll.Model.DisplayMode = 1;

                    fieldbll.Model.Description = f.Description;
                    fieldbll.Add();
                }
            }
        }

        BindGrid();
        new Rpt_DataSetBLL((Guid)ViewState["ID"]).ClearCache();
    }
Ejemplo n.º 11
0
    protected void bt_Save_Click(object sender, EventArgs e)
    {
        UD_TableListBLL bll;
        if (ViewState["TableID"] == null)
            bll = new UD_TableListBLL();
        else
            bll = new UD_TableListBLL((Guid)ViewState["TableID"]);

        UC_DetailView1.GetData(bll.Model);

        if (ViewState["TableID"] == null)
        {
            bll.Add();
        }
        else
        {
            bll.Update();
        }
        Response.Redirect("TableDetail.aspx?TableID=" + bll.Model.ID.ToString());
    }
Ejemplo n.º 12
0
    protected void ddl_TableName_SelectedIndexChanged(object sender, EventArgs e)
    {
        IList <UD_ModelFields> fields = UD_ModelFieldsBLL.GetModelList("TableID='" + ddl_TableName.SelectedValue + "'");

        foreach (Rpt_DataSetFields f in new Rpt_DataSetBLL((Guid)ViewState["ID"]).GetFields())
        {
            UD_ModelFields field = fields.FirstOrDefault(p => p.ID == f.FieldID);
            if (field != null)
            {
                UD_TableList table = new UD_TableListBLL(field.RelationTableName).Model;
                if (field.RelationType == 2 && table != null && table.TreeFlag == "Y")
                {
                    continue;
                }

                fields.Remove(field);
            }
        }

        cbxl_Fields.DataSource = fields;
        cbxl_Fields.DataBind();
    }
    protected void btn_addsearch_Click(object sender, EventArgs e)
    {
        if (ddl_Field.SelectedValue == "0")
        {
            return;
        }
        //添加条件
        ListItem lt = new ListItem();

        #region 条件选择
        UD_TableList table = new UD_TableListBLL(new Guid(ddl_TableName.SelectedValue), true).Model;
        if (table == null)
        {
            return;
        }

        UD_ModelFields modelfield = new UD_ModelFieldsBLL(new Guid(ddl_Field.SelectedValue), true).Model;
        if (modelfield == null)
        {
            return;
        }

        //字段全称
        string fielddisplayname = table.DisplayName + "." + modelfield.DisplayName;
        string fieldfullname    = "";

        if (modelfield.Flag == "Y")
        {
            fieldfullname = table.Name + "." + modelfield.FieldName;        //实体字段
        }
        else
        {
            fieldfullname = "MCS_SYS.dbo.UF_Spilt(" + table.Name + ".ExtPropertys,'|'," + modelfield.Position.ToString() + ")";
        }

        if (rbl_ValueFrom.SelectedValue == "M")
        {
            #region 从手工设定中取值
            switch (modelfield.RelationType)
            {
            case 1:
                #region 字典关联
                if (cbl_SearchValue.SelectedIndex != -1)
                {
                    lt.Text  = fielddisplayname + " 包含 ( ";
                    lt.Value = fieldfullname + " IN ( ";
                    foreach (ListItem item in cbl_SearchValue.Items)
                    {
                        if (item.Selected)
                        {
                            lt.Text  += item.Text + ",";
                            lt.Value += "'" + item.Value + "',";
                        }
                    }
                    lt.Text   = lt.Text.Substring(0, lt.Text.Length - 1);
                    lt.Value  = lt.Value.Substring(0, lt.Value.Length - 1);
                    lt.Text  += ")";
                    lt.Value += ")";
                }
                break;

                #endregion
            case 2:
                #region 实体表关联
                lt.Text  = fielddisplayname + " 为  ";
                lt.Value = fieldfullname + " =  ";
                if (!string.IsNullOrEmpty(modelfield.SearchPageURL))
                {
                    //通过查询控件查询
                    lt.Text  += MCSSelectControl1.SelectText;
                    lt.Value += "'" + MCSSelectControl1.SelectValue + "'";
                }
                else if (new UD_TableListBLL(modelfield.RelationTableName).Model.TreeFlag == "Y")
                {
                    #region 通过树形结构查询
                    if (modelfield.RelationTableName == "MCS_SYS.dbo.Addr_OrganizeCity")
                    {
                        if (ddl_TreeLevel.SelectedValue == "0")
                        {
                            lt.Text += MCSTreeControl1.SelectText;
                            lt.Value = fieldfullname + " = " + MCSTreeControl1.SelectValue;
                        }
                        else if (ddl_TreeLevel.SelectedValue == "100")
                        {
                            //所属于
                            lt.Text  = fielddisplayname + " " + ddl_TreeLevel.SelectedItem.Text + " " + MCSTreeControl1.SelectText;
                            lt.Value = "MCS_SYS.dbo.UF_IsChildOrganizeCity(" + MCSTreeControl1.SelectValue + "," + fieldfullname + ") = 0";
                        }
                        else
                        {
                            //指定级别上级
                            lt.Text  = fielddisplayname + " 的 " + ddl_TreeLevel.SelectedItem.Text + " 为 " + MCSTreeControl1.SelectText;
                            lt.Value = "MCS_SYS.dbo.UF_GetSuperOrganizeCityByLevel02(" + fieldfullname + "," + ddl_TreeLevel.SelectedValue + ") = " + MCSTreeControl1.SelectValue;
                        }
                    }
                    else if (modelfield.RelationTableName == "MCS_SYS.dbo.Addr_OfficialCity")
                    {
                        if (ddl_TreeLevel.SelectedValue == "0")
                        {
                            lt.Text += MCSTreeControl1.SelectText;
                            lt.Value = fieldfullname + " = " + MCSTreeControl1.SelectValue;
                        }
                        else if (ddl_TreeLevel.SelectedValue == "100")
                        {
                            //所属于
                            lt.Text  = fielddisplayname + " " + ddl_TreeLevel.SelectedItem.Text + " " + MCSTreeControl1.SelectText;
                            lt.Value = "MCS_SYS.dbo.UF_IsChildOfficialCityCity(" + MCSTreeControl1.SelectValue + "," + fieldfullname + ") = 0";
                        }
                        else
                        {
                            //指定级别上级
                            lt.Text  = fielddisplayname + " 的 " + ddl_TreeLevel.SelectedItem.Text + " 为 " + MCSTreeControl1.SelectText;
                            lt.Value = "MCS_SYS.dbo.UF_GetSuperOfficialCityByLevel02(" + fieldfullname + "," + ddl_TreeLevel.SelectedValue + ") = " + MCSTreeControl1.SelectValue;
                        }
                    }
                    else
                    {
                        lt.Text += MCSTreeControl1.SelectText;
                        lt.Value = fieldfullname + " IN  (";
                        DataTable dt = TreeTableBLL.GetAllChildByNodes(modelfield.RelationTableName, "ID", "SuperID", MCSTreeControl1.SelectValue);
                        foreach (DataRow dr in dt.Rows)
                        {
                            lt.Value += "'" + dr[0].ToString() + "',";
                        }
                        lt.Value += "'" + MCSTreeControl1.SelectValue + "')";
                    }
                    #endregion
                }
                else
                {
                    #region 其他关联方式的实体表
                    if (cbl_SearchValue.SelectedIndex != -1)
                    {
                        lt.Text  = fielddisplayname + " 包含 ( ";
                        lt.Value = fieldfullname + " IN ( ";
                        foreach (ListItem item in cbl_SearchValue.Items)
                        {
                            if (item.Selected)
                            {
                                lt.Text  += item.Text + ",";
                                lt.Value += "'" + item.Value + "',";
                            }
                        }
                        lt.Text   = lt.Text.Substring(0, lt.Text.Length - 1);
                        lt.Value  = lt.Value.Substring(0, lt.Value.Length - 1);
                        lt.Text  += ")";
                        lt.Value += ")";
                    }
                    #endregion
                }
                break;

                #endregion
            default:
                #region 非关联字段
                lt.Text  = fielddisplayname + " " + ddl_op.SelectedItem.Text + " (" + tbx_searchvalue.Text + ")";
                lt.Value = fieldfullname + " =  ";
                if (ddl_op.SelectedValue != "like")
                {
                    if (tbx_searchvalue.Text.StartsWith("@"))
                    {
                        lt.Value = fieldfullname + " " + ddl_op.SelectedItem.Value + tbx_searchvalue.Text;
                    }
                    else
                    {
                        lt.Value = fieldfullname + " " + ddl_op.SelectedItem.Value + " '" + tbx_searchvalue.Text + "'";
                    }
                }
                else
                {
                    lt.Value = fieldfullname + " " + ddl_op.SelectedItem.Value + " '%" + tbx_searchvalue.Text + "%'";
                }
                break;
                #endregion
            }
            #endregion
        }
        else
        {
            #region 从参数中取值
            switch (modelfield.RelationType)
            {
            case 1:
                #region 字典关联
                lt.Text  = fielddisplayname + " = " + ddl_Param.SelectedValue;
                lt.Value = fieldfullname + " = " + ddl_Param.SelectedValue;
                #endregion
                break;

            case 2:
                #region 实体表关联
                lt.Text  = fielddisplayname + " 为  ";
                lt.Value = fieldfullname + " =  ";
                if (ddl_TreeLevel.Visible)
                {
                    #region 管理片区及行政城市选项
                    if (ddl_TreeLevel.SelectedValue == "0")
                    {
                        //当前级
                        lt.Text += ddl_Param.SelectedValue;
                        lt.Value = fieldfullname + " = " + ddl_Param.SelectedValue;
                    }
                    else if (ddl_TreeLevel.SelectedValue == "100")
                    {
                        //所属于
                        lt.Text = fielddisplayname + " " + ddl_TreeLevel.SelectedItem.Text + " " + ddl_Param.SelectedValue;

                        if (modelfield.RelationTableName == "MCS_SYS.dbo.Addr_OrganizeCity")
                        {
                            lt.Value = "MCS_SYS.dbo.UF_IsChildOrganizeCity(" + ddl_Param.SelectedValue + "," + fieldfullname + ") = 0";
                        }
                        else if (modelfield.RelationTableName == "MCS_SYS.dbo.Addr_OfficialCity")
                        {
                            lt.Value = "MCS_SYS.dbo.UF_IsChildOfficialCityCity(" + ddl_Param.SelectedValue + "," + fieldfullname + ") = 0";
                        }
                    }
                    else
                    {
                        lt.Text = fielddisplayname + " 的 " + ddl_TreeLevel.SelectedItem.Text + " 为 " + ddl_Param.SelectedValue;

                        //指定级别上级
                        if (modelfield.RelationTableName == "MCS_SYS.dbo.Addr_OrganizeCity")
                        {
                            lt.Value = "MCS_SYS.dbo.UF_GetSuperOrganizeCityByLevel02(" + fieldfullname + "," + ddl_TreeLevel.SelectedValue + ") = " + ddl_Param.SelectedValue;
                        }
                        else if (modelfield.RelationTableName == "MCS_SYS.dbo.Addr_OfficialCity")
                        {
                            lt.Value = "MCS_SYS.dbo.UF_GetSuperOfficialCityByLevel02(" + fieldfullname + "," + ddl_TreeLevel.SelectedValue + ") = " + ddl_Param.SelectedValue;
                        }
                    }
                    #endregion
                }
                else
                {
                    lt.Text += ddl_Param.SelectedValue;
                    lt.Value = fieldfullname + " = " + ddl_Param.SelectedValue;
                }
                break;

                #endregion
            default:
                #region 非关联字段
                lt.Text  = fielddisplayname + " " + ddl_op.SelectedItem.Text + " (" + ddl_Param.SelectedValue + ")";
                lt.Value = fieldfullname + " =  ";
                if (ddl_op.SelectedValue != "like")
                {
                    lt.Value = fieldfullname + " " + ddl_op.SelectedItem.Value + ddl_Param.SelectedValue;
                }
                else
                {
                    lt.Value = fieldfullname + " LIKE '%'+" + ddl_Param.SelectedValue + "+'%'";
                }
                break;
                #endregion
            }
            #endregion
        }
        #endregion

        if (!string.IsNullOrEmpty(lt.Text))
        {
            lbx_search.Items.Add(lt);
        }
    }
    protected void btn_addsearch_Click(object sender, EventArgs e)
    {
        if (ddl_Field.SelectedValue == "0")
        {
            return;
        }
        //添加条件
        ListItem lt = new ListItem();

        #region 条件选择
        UD_TableList table = new UD_TableListBLL(new Guid(ddl_TableName.SelectedValue), true).Model;
        if (table == null)
        {
            return;
        }

        UD_ModelFields modelfield = null;
        try
        {
            modelfield = new UD_ModelFieldsBLL(new Guid(ddl_Field.SelectedValue), true).Model;
        }
        catch { }

        if (modelfield == null)
        {
            //自定义字段
            lt.Text  = ddl_Field.SelectedItem.Text + " " + ddl_op.SelectedItem.Text + " ('" + tbx_searchvalue.Text + "')";
            lt.Value = ddl_Field.SelectedValue + " " + ddl_op.SelectedItem.Value + " '" + tbx_searchvalue.Text + "'";
        }
        else
        {
            string fielddisplayname = table.DisplayName + "." + modelfield.DisplayName;
            string fieldfullname    = "";

            if (modelfield.Flag == "Y")
            {
                fieldfullname = table.Name + "." + modelfield.FieldName;        //实体字段
            }
            else
            {
                fieldfullname = "MCS_SYS.dbo.UF_Spilt(" + table.Name + ".ExtPropertys,'|'," + modelfield.Position.ToString() + ")";
            }


            if (ddl_op.SelectedValue == "NOTNULL")
            {
                lt.Text  = fielddisplayname + " 不为空";
                lt.Value = " ISNULL(" + fieldfullname + ",'')<>'' ";
                lbx_search.Items.Add(lt);
                return;
            }
            if (ddl_op.SelectedValue == "ISNULL")
            {
                lt.Text  = fielddisplayname + " 为空";
                lt.Value = " ISNULL(" + fieldfullname + ",'')='' ";
                lbx_search.Items.Add(lt);
                return;
            }

            switch (modelfield.RelationType)
            {
            case 1:
                #region 字典关联
                if (cbl_SearchValue.SelectedIndex != -1)
                {
                    lt.Text  = fielddisplayname + " 包含 ( ";
                    lt.Value = fieldfullname + " IN ( ";
                    foreach (ListItem item in cbl_SearchValue.Items)
                    {
                        if (item.Selected)
                        {
                            lt.Text  += item.Text + ",";
                            lt.Value += "'" + item.Value + "',";
                        }
                    }
                    lt.Text   = lt.Text.Substring(0, lt.Text.Length - 1);
                    lt.Value  = lt.Value.Substring(0, lt.Value.Length - 1);
                    lt.Text  += ")";
                    lt.Value += ")";
                }
                break;

                #endregion
            case 2:
                #region 实体表关联
                lt.Text  = fielddisplayname + " 为  ";
                lt.Value = fieldfullname + " =  ";
                if (!string.IsNullOrEmpty(modelfield.SearchPageURL))
                {
                    //通过查询控件查询
                    lt.Text  += MCSSelectControl1.SelectText;
                    lt.Value += "'" + MCSSelectControl1.SelectValue + "'";
                }
                else if (new UD_TableListBLL(modelfield.RelationTableName).Model.TreeFlag == "Y")
                {
                    #region 通过树形结构查询
                    if (modelfield.RelationTableName == "MCS_SYS.dbo.Addr_OrganizeCity" || modelfield.RelationTableName == "MCS_SYS.dbo.Addr_OfficialCity")
                    {
                        if (ddl_TreeLevel.SelectedValue == "0")
                        {
                            lt.Text += MCSTreeControl1.SelectText;
                            lt.Value = fieldfullname + " = " + MCSTreeControl1.SelectValue;
                        }
                        else if (ddl_TreeLevel.SelectedValue == "100")
                        {
                            //所属于
                            lt.Text = fielddisplayname + " " + ddl_TreeLevel.SelectedItem.Text + " " + MCSTreeControl1.SelectText;

                            lt.Value = fieldfullname + " IN  (";
                            DataTable dt = TreeTableBLL.GetAllChildByNodes(modelfield.RelationTableName, "ID", "SuperID", MCSTreeControl1.SelectValue);
                            foreach (DataRow dr in dt.Rows)
                            {
                                lt.Value += "'" + dr[0].ToString() + "',";
                            }
                            lt.Value += "'" + MCSTreeControl1.SelectValue + "')";
                        }
                    }
                    else
                    {
                        lt.Text += MCSTreeControl1.SelectText;
                        lt.Value = fieldfullname + " IN  (";
                        DataTable dt = TreeTableBLL.GetAllChildByNodes(modelfield.RelationTableName, "ID", "SuperID", MCSTreeControl1.SelectValue);
                        foreach (DataRow dr in dt.Rows)
                        {
                            lt.Value += "'" + dr[0].ToString() + "',";
                        }
                        lt.Value += "'" + MCSTreeControl1.SelectValue + "')";
                    }
                    #endregion
                }
                else
                {
                    #region 其他关联方式的实体表
                    if (cbl_SearchValue.SelectedIndex != -1)
                    {
                        lt.Text  = fielddisplayname + " 包含 ( ";
                        lt.Value = fieldfullname + " IN ( ";
                        foreach (ListItem item in cbl_SearchValue.Items)
                        {
                            if (item.Selected)
                            {
                                lt.Text  += item.Text + ",";
                                lt.Value += "'" + item.Value + "',";
                            }
                        }
                        lt.Text   = lt.Text.Substring(0, lt.Text.Length - 1);
                        lt.Value  = lt.Value.Substring(0, lt.Value.Length - 1);
                        lt.Text  += ")";
                        lt.Value += ")";
                    }
                    #endregion
                }
                break;

                #endregion
            default:
                #region 非关联字段
                lt.Text  = fielddisplayname + " " + ddl_op.SelectedItem.Text + " ('" + tbx_searchvalue.Text + "')";
                lt.Value = fieldfullname + " =  ";
                if (ddl_op.SelectedValue == "StartWith")
                {
                    lt.Value = fieldfullname + " " + "Like" + " '" + tbx_searchvalue.Text + "%'";
                }
                else if (ddl_op.SelectedValue == "NotStartWith")
                {
                    lt.Value = fieldfullname + " " + "Not Like" + " '" + tbx_searchvalue.Text + "%'";
                }
                else if (ddl_op.SelectedValue != "like")
                {
                    if (modelfield.DataType == 4)            //日期(datetime)
                    {
                        lt.Value = "CONVERT(DATETIME,CONVERT(VARCHAR,CONVERT(DATETIME," + fieldfullname + "),111))" + " " + ddl_op.SelectedItem.Value + " '" + tbx_searchvalue.Text + "'";
                    }
                    else
                    {
                        lt.Value = fieldfullname + " " + ddl_op.SelectedItem.Value + " '" + tbx_searchvalue.Text + "'";
                    }
                }
                else
                {
                    lt.Value = fieldfullname + " " + ddl_op.SelectedItem.Value + " '%" + tbx_searchvalue.Text + "%'";
                }
                break;
                #endregion
            }
        }
        #endregion

        if (!string.IsNullOrEmpty(lt.Text))
        {
            lbx_search.Items.Add(lt);
        }
    }
Ejemplo n.º 15
0
 private void BindDropDown()
 {
     ddl_TableName.DataSource = UD_TableListBLL.GetModelList("");
     ddl_TableName.DataBind();
 }
    protected void bt_OK_Click(object sender, EventArgs e)
    {
        Rpt_DataSetFieldsBLL _bll;

        if ((Guid)ViewState["ID"] != Guid.Empty)
        {
            _bll = new Rpt_DataSetFieldsBLL((Guid)ViewState["ID"]);
        }
        else
        {
            _bll = new Rpt_DataSetFieldsBLL();
        }

        _bll.Model.DataSet = (Guid)ViewState["DataSet"];

        _bll.Model.FieldName   = tbx_FieldName.Text;
        _bll.Model.DisplayName = tbx_DisplayName.Text;
        _bll.Model.DataType    = int.Parse(ddl_DataType.SelectedValue);
        _bll.Model.Description = tbx_Description.Text;

        if (ddl_IsComputeField.SelectedValue == "Y")
        {
            _bll.Model.IsComputeField = "Y";
            _bll.Model.Expression     = tbx_Expression.Text.Trim();
            if (_bll.Model.Expression == "")
            {
                tbx_Expression.Focus();
                MessageBox.Show(this, "请正确录入计算列的表达式!");
                return;
            }
        }
        else
        {
            _bll.Model.IsComputeField = "N";
            _bll.Model.Expression     = "";
        }

        if (tbx_SortID.Text != "")
        {
            _bll.Model.ColumnSortID = int.Parse(tbx_SortID.Text);
        }
        _bll.Model.DisplayMode = int.Parse(ddl_DisplayMode.SelectedValue);

        #region 树形字段有指定层次时,重设字段名
        //要与查询条件生成的字段要一致,以便支持多同一树形字段多列显示
        if (tbx_TreeLevel.Enabled)
        {
            UD_ModelFields f = new UD_ModelFieldsBLL(_bll.Model.FieldID).Model;

            if (new UD_TableListBLL(f.RelationTableName).Model.TreeFlag == "Y")
            {
                int level = 0;
                int.TryParse(tbx_TreeLevel.Text, out level);
                _bll.Model.TreeLevel = level;

                UD_TableList t = new UD_TableListBLL(f.TableID).Model;
                if (level > 0)
                {
                    _bll.Model.FieldName = t.ModelClassName + "_" + f.FieldName + level.ToString();
                }
                else
                {
                    _bll.Model.FieldName = t.ModelClassName + "_" + f.FieldName;
                }
            }
        }
        #endregion

        if (Rpt_DataSetFieldsBLL.GetModelList("DataSet='" + _bll.Model.DataSet.ToString() + "' AND FieldName='" +
                                              _bll.Model.FieldName + "' AND ID <>'" + _bll.Model.ID.ToString() + "'").Count > 0)
        {
            MessageBox.Show(this, "对不起,字段名已重复,请更改字段名称!");
            return;
        }

        if ((Guid)ViewState["ID"] != Guid.Empty)
        {
            _bll.Update();
        }
        else
        {
            _bll.Add();
        }
        new Rpt_DataSetBLL((Guid)ViewState["DataSet"]).ClearCache();

        Response.Redirect("Rpt_DataSetFieldsList.aspx?ID=" + ViewState["DataSet"].ToString());
    }
    protected void btn_addsearch_Click(object sender, EventArgs e)
    {
        if (ddl_Field.SelectedValue == "0") return;
        //添加条件
        ListItem lt = new ListItem();

        #region 条件选择
        UD_TableList table = new UD_TableListBLL(new Guid(ddl_TableName.SelectedValue), true).Model;
        if (table == null) return;

        UD_ModelFields modelfield = null;
        try
        {
            modelfield = new UD_ModelFieldsBLL(new Guid(ddl_Field.SelectedValue), true).Model;
        }
        catch { }

        if (modelfield == null)
        {
            //自定义字段
            lt.Text = ddl_Field.SelectedItem.Text + " " + ddl_op.SelectedItem.Text + " ('" + tbx_searchvalue.Text + "')";
            lt.Value = ddl_Field.SelectedValue + " " + ddl_op.SelectedItem.Value + " '" + tbx_searchvalue.Text + "'";
        }
        else
        {
            string fielddisplayname = table.DisplayName + "." + modelfield.DisplayName;
            string fieldfullname = "";

            if (modelfield.Flag == "Y")
                fieldfullname = table.Name + "." + modelfield.FieldName;        //实体字段
            else
                fieldfullname = "MCS_SYS.dbo.UF_Spilt(" + table.Name + ".ExtPropertys,'|'," + modelfield.Position.ToString() + ")";


            if (ddl_op.SelectedValue == "NOTNULL")
            {
                lt.Text = fielddisplayname + " 不为空";
                lt.Value = " ISNULL(" + fieldfullname + ",'')<>'' ";
                lbx_search.Items.Add(lt);
                return;
            }
            if (ddl_op.SelectedValue == "ISNULL")
            {
                lt.Text = fielddisplayname + " 为空";
                lt.Value = " ISNULL(" + fieldfullname + ",'')='' ";
                lbx_search.Items.Add(lt);
                return;
            }

            switch (modelfield.RelationType)
            {
                case 1:
                    #region 字典关联
                    if (cbl_SearchValue.SelectedIndex != -1)
                    {
                        lt.Text = fielddisplayname + " 包含 ( ";
                        lt.Value = fieldfullname + " IN ( ";
                        foreach (ListItem item in cbl_SearchValue.Items)
                        {
                            if (item.Selected)
                            {
                                lt.Text += item.Text + ",";
                                lt.Value += "'" + item.Value + "',";
                            }
                        }
                        lt.Text = lt.Text.Substring(0, lt.Text.Length - 1);
                        lt.Value = lt.Value.Substring(0, lt.Value.Length - 1);
                        lt.Text += ")";
                        lt.Value += ")";
                    }
                    break;
                    #endregion
                case 2:
                    #region 实体表关联
                    lt.Text = fielddisplayname + " 为  ";
                    lt.Value = fieldfullname + " =  ";
                    if (!string.IsNullOrEmpty(modelfield.SearchPageURL))
                    {
                        //通过查询控件查询
                        lt.Text += MCSSelectControl1.SelectText;
                        lt.Value += "'" + MCSSelectControl1.SelectValue + "'";
                    }
                    else if (new UD_TableListBLL(modelfield.RelationTableName).Model.TreeFlag == "Y")
                    {
                        #region 通过树形结构查询
                        if (modelfield.RelationTableName == "MCS_SYS.dbo.Addr_OrganizeCity" || modelfield.RelationTableName == "MCS_SYS.dbo.Addr_OfficialCity")
                        {
                            if (ddl_TreeLevel.SelectedValue == "0")
                            {
                                lt.Text += MCSTreeControl1.SelectText;
                                lt.Value = fieldfullname + " = " + MCSTreeControl1.SelectValue;
                            }
                            else if (ddl_TreeLevel.SelectedValue == "100")
                            {
                                //所属于
                                lt.Text = fielddisplayname + " " + ddl_TreeLevel.SelectedItem.Text + " " + MCSTreeControl1.SelectText;
                        
                                lt.Value = fieldfullname + " IN  (";
                                DataTable dt = TreeTableBLL.GetAllChildByNodes(modelfield.RelationTableName, "ID", "SuperID", MCSTreeControl1.SelectValue);
                                foreach (DataRow dr in dt.Rows)
                                {
                                    lt.Value += "'" + dr[0].ToString() + "',";
                                }
                                lt.Value += "'" + MCSTreeControl1.SelectValue + "')";                               
                            }
                        }
                        else
                        {
                            lt.Text += MCSTreeControl1.SelectText;
                            lt.Value = fieldfullname + " IN  (";
                            DataTable dt = TreeTableBLL.GetAllChildByNodes(modelfield.RelationTableName, "ID", "SuperID", MCSTreeControl1.SelectValue);
                            foreach (DataRow dr in dt.Rows)
                            {
                                lt.Value += "'" + dr[0].ToString() + "',";
                            }
                            lt.Value += "'" + MCSTreeControl1.SelectValue + "')";
                        }
                        #endregion
                    }
                    else
                    {
                        #region 其他关联方式的实体表
                        if (cbl_SearchValue.SelectedIndex != -1)
                        {
                            lt.Text = fielddisplayname + " 包含 ( ";
                            lt.Value = fieldfullname + " IN ( ";
                            foreach (ListItem item in cbl_SearchValue.Items)
                            {
                                if (item.Selected)
                                {
                                    lt.Text += item.Text + ",";
                                    lt.Value += "'" + item.Value + "',";
                                }
                            }
                            lt.Text = lt.Text.Substring(0, lt.Text.Length - 1);
                            lt.Value = lt.Value.Substring(0, lt.Value.Length - 1);
                            lt.Text += ")";
                            lt.Value += ")";
                        }
                        #endregion
                    }
                    break;
                    #endregion
                default:
                    #region 非关联字段
                    lt.Text = fielddisplayname + " " + ddl_op.SelectedItem.Text + " ('" + tbx_searchvalue.Text + "')";
                    lt.Value = fieldfullname + " =  ";
                    if (ddl_op.SelectedValue == "StartWith")
                    {
                        lt.Value = fieldfullname + " " + "Like" + " '" + tbx_searchvalue.Text + "%'";
                    }
                    else if (ddl_op.SelectedValue == "NotStartWith")
                    {
                        lt.Value = fieldfullname + " " + "Not Like" + " '" + tbx_searchvalue.Text + "%'";
                    }
                    else if (ddl_op.SelectedValue != "like")
                    {
                        if (modelfield.DataType == 4)        //日期(datetime)
                        {
                            lt.Value = "CONVERT(DATETIME,CONVERT(VARCHAR,CONVERT(DATETIME," + fieldfullname + "),111))" + " " + ddl_op.SelectedItem.Value + " '" + tbx_searchvalue.Text + "'";
                        }
                        else
                        {
                            lt.Value = fieldfullname + " " + ddl_op.SelectedItem.Value + " '" + tbx_searchvalue.Text + "'";
                        }
                    }
                    else
                        lt.Value = fieldfullname + " " + ddl_op.SelectedItem.Value + " '%" + tbx_searchvalue.Text + "%'";
                    break;
                    #endregion
            }
        }
        #endregion

        if (!string.IsNullOrEmpty(lt.Text)) lbx_search.Items.Add(lt);
    }
    protected void btn_addsearch_Click(object sender, EventArgs e)
    {
        if (ddl_Field.SelectedValue == "0") return;
        //添加条件
        ListItem lt = new ListItem();

        #region 条件选择
        UD_TableList table = new UD_TableListBLL(new Guid(ddl_TableName.SelectedValue), true).Model;
        if (table == null) return;

        UD_ModelFields modelfield = new UD_ModelFieldsBLL(new Guid(ddl_Field.SelectedValue), true).Model;
        if (modelfield == null) return;

        //字段全称
        string fielddisplayname = table.DisplayName + "." + modelfield.DisplayName;
        string fieldfullname = "";

        if (modelfield.Flag == "Y")
            fieldfullname = table.Name + "." + modelfield.FieldName;        //实体字段
        else
            fieldfullname = "MCS_SYS.dbo.UF_Spilt(" + table.Name + ".ExtPropertys,'|'," + modelfield.Position.ToString() + ")";

        if (rbl_ValueFrom.SelectedValue == "M")
        {
            #region 从手工设定中取值
            switch (modelfield.RelationType)
            {
                case 1:
                    #region 字典关联
                    if (cbl_SearchValue.SelectedIndex != -1)
                    {
                        lt.Text = fielddisplayname + " 包含 ( ";
                        lt.Value = fieldfullname + " IN ( ";
                        foreach (ListItem item in cbl_SearchValue.Items)
                        {
                            if (item.Selected)
                            {
                                lt.Text += item.Text + ",";
                                lt.Value += "'" + item.Value + "',";
                            }
                        }
                        lt.Text = lt.Text.Substring(0, lt.Text.Length - 1);
                        lt.Value = lt.Value.Substring(0, lt.Value.Length - 1);
                        lt.Text += ")";
                        lt.Value += ")";
                    }
                    break;
                    #endregion
                case 2:
                    #region 实体表关联
                    lt.Text = fielddisplayname + " 为  ";
                    lt.Value = fieldfullname + " =  ";
                    if (!string.IsNullOrEmpty(modelfield.SearchPageURL))
                    {
                        //通过查询控件查询
                        lt.Text += MCSSelectControl1.SelectText;
                        lt.Value += "'" + MCSSelectControl1.SelectValue + "'";
                    }
                    else if (new UD_TableListBLL(modelfield.RelationTableName).Model.TreeFlag == "Y")
                    {
                        #region 通过树形结构查询
                        if (modelfield.RelationTableName == "MCS_SYS.dbo.Addr_OrganizeCity")
                        {
                            if (ddl_TreeLevel.SelectedValue == "0")
                            {
                                lt.Text += MCSTreeControl1.SelectText;
                                lt.Value = fieldfullname + " = " + MCSTreeControl1.SelectValue;
                            }
                            else if (ddl_TreeLevel.SelectedValue == "100")
                            {
                                //所属于
                                lt.Text = fielddisplayname + " " + ddl_TreeLevel.SelectedItem.Text + " " + MCSTreeControl1.SelectText;
                                lt.Value = "MCS_SYS.dbo.UF_IsChildOrganizeCity(" + MCSTreeControl1.SelectValue + "," + fieldfullname + ") = 0";
                            }
                            else
                            {
                                //指定级别上级
                                lt.Text = fielddisplayname + " 的 " + ddl_TreeLevel.SelectedItem.Text + " 为 " + MCSTreeControl1.SelectText;
                                lt.Value = "MCS_SYS.dbo.UF_GetSuperOrganizeCityByLevel02(" + fieldfullname + "," + ddl_TreeLevel.SelectedValue + ") = " + MCSTreeControl1.SelectValue;
                            }
                        }
                        else if (modelfield.RelationTableName == "MCS_SYS.dbo.Addr_OfficialCity")
                        {
                            if (ddl_TreeLevel.SelectedValue == "0")
                            {
                                lt.Text += MCSTreeControl1.SelectText;
                                lt.Value = fieldfullname + " = " + MCSTreeControl1.SelectValue;
                            }
                            else if (ddl_TreeLevel.SelectedValue == "100")
                            {
                                //所属于
                                lt.Text = fielddisplayname + " " + ddl_TreeLevel.SelectedItem.Text + " " + MCSTreeControl1.SelectText;
                                lt.Value = "MCS_SYS.dbo.UF_IsChildOfficialCityCity(" + MCSTreeControl1.SelectValue + "," + fieldfullname + ") = 0";
                            }
                            else
                            {
                                //指定级别上级
                                lt.Text = fielddisplayname + " 的 " + ddl_TreeLevel.SelectedItem.Text + " 为 " + MCSTreeControl1.SelectText;
                                lt.Value = "MCS_SYS.dbo.UF_GetSuperOfficialCityByLevel02(" + fieldfullname + "," + ddl_TreeLevel.SelectedValue + ") = " + MCSTreeControl1.SelectValue;
                            }
                        }
                        else
                        {
                            lt.Text += MCSTreeControl1.SelectText;
                            lt.Value = fieldfullname + " IN  (";
                            DataTable dt = TreeTableBLL.GetAllChildByNodes(modelfield.RelationTableName, "ID", "SuperID", MCSTreeControl1.SelectValue);
                            foreach (DataRow dr in dt.Rows)
                            {
                                lt.Value += "'" + dr[0].ToString() + "',";
                            }
                            lt.Value += "'" + MCSTreeControl1.SelectValue + "')";
                        }
                        #endregion
                    }
                    else
                    {
                        #region 其他关联方式的实体表
                        if (cbl_SearchValue.SelectedIndex != -1)
                        {
                            lt.Text = fielddisplayname + " 包含 ( ";
                            lt.Value = fieldfullname + " IN ( ";
                            foreach (ListItem item in cbl_SearchValue.Items)
                            {
                                if (item.Selected)
                                {
                                    lt.Text += item.Text + ",";
                                    lt.Value += "'" + item.Value + "',";
                                }
                            }
                            lt.Text = lt.Text.Substring(0, lt.Text.Length - 1);
                            lt.Value = lt.Value.Substring(0, lt.Value.Length - 1);
                            lt.Text += ")";
                            lt.Value += ")";
                        }
                        #endregion
                    }
                    break;
                    #endregion
                default:
                    #region 非关联字段
                    lt.Text = fielddisplayname + " " + ddl_op.SelectedItem.Text + " (" + tbx_searchvalue.Text + ")";
                    lt.Value = fieldfullname + " =  ";
                    if (ddl_op.SelectedValue != "like")
                    {
                        if (tbx_searchvalue.Text.StartsWith("@"))
                            lt.Value = fieldfullname + " " + ddl_op.SelectedItem.Value + tbx_searchvalue.Text;
                        else
                            lt.Value = fieldfullname + " " + ddl_op.SelectedItem.Value + " '" + tbx_searchvalue.Text + "'";
                    }
                    else
                        lt.Value = fieldfullname + " " + ddl_op.SelectedItem.Value + " '%" + tbx_searchvalue.Text + "%'";
                    break;
                    #endregion
            }
            #endregion
        }
        else
        {
            #region 从参数中取值
            switch (modelfield.RelationType)
            {
                case 1:
                    #region 字典关联
                    lt.Text = fielddisplayname + " = " + ddl_Param.SelectedValue;
                    lt.Value = fieldfullname + " = " + ddl_Param.SelectedValue;
                    #endregion
                    break;
                case 2:
                    #region 实体表关联
                    lt.Text = fielddisplayname + " 为  ";
                    lt.Value = fieldfullname + " =  ";
                    if (ddl_TreeLevel.Visible)
                    {
                        #region 管理片区及行政城市选项
                        if (ddl_TreeLevel.SelectedValue == "0")
                        {
                            //当前级
                            lt.Text += ddl_Param.SelectedValue;
                            lt.Value = fieldfullname + " = " + ddl_Param.SelectedValue;
                        }
                        else if (ddl_TreeLevel.SelectedValue == "100")
                        {
                            //所属于
                            lt.Text = fielddisplayname + " " + ddl_TreeLevel.SelectedItem.Text + " " + ddl_Param.SelectedValue;

                            if (modelfield.RelationTableName == "MCS_SYS.dbo.Addr_OrganizeCity")
                            {
                                lt.Value = "MCS_SYS.dbo.UF_IsChildOrganizeCity(" + ddl_Param.SelectedValue + "," + fieldfullname + ") = 0";
                            }
                            else if (modelfield.RelationTableName == "MCS_SYS.dbo.Addr_OfficialCity")
                            {
                                lt.Value = "MCS_SYS.dbo.UF_IsChildOfficialCityCity(" + ddl_Param.SelectedValue + "," + fieldfullname + ") = 0";
                            }
                        }
                        else
                        {
                            lt.Text = fielddisplayname + " 的 " + ddl_TreeLevel.SelectedItem.Text + " 为 " + ddl_Param.SelectedValue;

                            //指定级别上级
                            if (modelfield.RelationTableName == "MCS_SYS.dbo.Addr_OrganizeCity")
                            {
                                lt.Value = "MCS_SYS.dbo.UF_GetSuperOrganizeCityByLevel02(" + fieldfullname + "," + ddl_TreeLevel.SelectedValue + ") = " + ddl_Param.SelectedValue;
                            }
                            else if (modelfield.RelationTableName == "MCS_SYS.dbo.Addr_OfficialCity")
                            {
                                lt.Value = "MCS_SYS.dbo.UF_GetSuperOfficialCityByLevel02(" + fieldfullname + "," + ddl_TreeLevel.SelectedValue + ") = " + ddl_Param.SelectedValue;
                            }
                        }
                        #endregion
                    }
                    else
                    {
                        lt.Text += ddl_Param.SelectedValue;
                        lt.Value = fieldfullname + " = " + ddl_Param.SelectedValue;
                    }
                    break;
                    #endregion
                default:
                    #region 非关联字段
                    lt.Text = fielddisplayname + " " + ddl_op.SelectedItem.Text + " (" + ddl_Param.SelectedValue + ")";
                    lt.Value = fieldfullname + " =  ";
                    if (ddl_op.SelectedValue != "like")
                        lt.Value = fieldfullname + " " + ddl_op.SelectedItem.Value + ddl_Param.SelectedValue;
                    else
                        lt.Value = fieldfullname + " LIKE '%'+" + ddl_Param.SelectedValue + "+'%'";
                    break;
                    #endregion
            }
            #endregion

        }
        #endregion

        if (!string.IsNullOrEmpty(lt.Text)) lbx_search.Items.Add(lt);
    }
Ejemplo n.º 19
0
        /// <summary>
        /// Init the components of the panel through the special pageid
        /// </summary>
        private void InitComponents()
        {
            HtmlTable T_Content = new HtmlTable();
            T_Content.CellPadding = 0;
            T_Content.CellSpacing = 0;
            T_Content.Width = "100%";
            T_Content.Border = 0;
            T_Content.ID = "T_Content_" + ID;
            this.Controls.Add(T_Content);

            UD_DetailViewBLL _DetailViewBll = new UD_DetailViewBLL(DetailViewCode, true);

            IList<UD_Panel> _panellist = _DetailViewBll.GetDetailPanels();
            Hashtable _htFieldControlsInfo = new Hashtable();

            foreach (UD_Panel _panelmodel in _panellist)
            {
                HtmlTableRow tr_panel = new HtmlTableRow();//Create one TableRow for a panel
                tr_panel.ID = _panelmodel.Code;
                if (_panelmodel.Enable.ToUpper() == "N")
                    tr_panel.Visible = false;
                HtmlTableCell tc_panel = new HtmlTableCell();
                string _tablestytle = _panelmodel.TableStyle;
                string[] _tablestyles = _panelmodel.TableStyle.Split(new char[] { ',' });

                if (_tablestyles.Length < 3)
                    _tablestyles = ("tabForm,dataLabel,dataField").Split(new char[] { ',' });

                #region The title of the panel
                if (_panelmodel.Name != "")
                {
                    HtmlTable tb_panel_title = new HtmlTable();
                    tb_panel_title.CellPadding = 0;
                    tb_panel_title.CellSpacing = 0;
                    tb_panel_title.Width = "100%";
                    tb_panel_title.Height = "28px";
                    tb_panel_title.Border = 0;
                    tb_panel_title.Attributes["class"] = "h3Row";
                    HtmlTableRow tr_panel_title = new HtmlTableRow();
                    HtmlTableCell tc_panel_title = new HtmlTableCell();
                    tc_panel_title.InnerHtml = "<h3>" + _panelmodel.Name + "</h3>";
                    tr_panel_title.Cells.Add(tc_panel_title);
                    tb_panel_title.Rows.Add(tr_panel_title);
                    tc_panel.Controls.Add(tb_panel_title);
                }
                #endregion

                #region The content of the panel
                IList<UD_Panel_ModelFields> fields = new UD_PanelBLL(_panelmodel.ID, true).GetModelFields();

                int FieldCount = _panelmodel.FieldCount;

                HtmlTable tb_panel_content = new HtmlTable();
                tb_panel_content.Width = "100%";
                tb_panel_content.Attributes["class"] = _tablestyles[0];
                int i = 0;
                foreach (UD_Panel_ModelFields _panel_modelfields in fields)
                {
                    if (_panel_modelfields.Visible == "N") continue;

                    UD_ModelFields _modelfieldsmodel = new UD_ModelFieldsBLL(_panel_modelfields.FieldID, true).Model;
                    UD_TableList _tablemodel = new UD_TableListBLL(_modelfieldsmodel.TableID, true).Model;

                    #region 判断该控件是否已存在
                    if (_htFieldControlsInfo.Contains(_tablemodel.ModelClassName + "_" + _modelfieldsmodel.FieldName)) continue;
                    #endregion

                    #region 判断是否要增加新行
                    HtmlTableRow tr_panel_detail;
                    if (i >= FieldCount || i == 0)
                    {
                        tr_panel_detail = new HtmlTableRow();
                        tb_panel_content.Rows.Add(tr_panel_detail);
                        i = 0;
                    }
                    else
                    {
                        tr_panel_detail = tb_panel_content.Rows[tb_panel_content.Rows.Count - 1];
                    }
                    #endregion

                    #region 增加Label Cell
                    HtmlTableCell tc_displayname = new HtmlTableCell();
                    tc_displayname.Attributes["Class"] = _tablestyles[1];
                    tc_displayname.InnerText = string.IsNullOrEmpty(_panel_modelfields.LabelText) ?
                        _modelfieldsmodel.DisplayName : _panel_modelfields.LabelText;
                    if (tc_displayname.InnerText.Length <= 6)
                        tc_displayname.Attributes["Style"] = "width: 80px; height: 18px;";
                    else
                        tc_displayname.Attributes["Style"] = "width: 100px; height: 18px;";
                    tc_displayname.Attributes["nowrap"] = "nowrap";
                    tr_panel_detail.Cells.Add(tc_displayname);
                    #endregion

                    #region 增加Field Cell
                    HtmlTableCell tc_control = new HtmlTableCell();
                    tc_control.Attributes["Class"] = _tablestyles[2];
                    if (_panel_modelfields.ColSpan > 0)
                    {
                        if (i + _panel_modelfields.ColSpan <= FieldCount)
                        {
                            tc_control.ColSpan = 2 * _panel_modelfields.ColSpan - 1;
                            i = i + _panel_modelfields.ColSpan;
                        }
                        else
                        {
                            tc_control.ColSpan = 2 * (FieldCount - i) - 1;
                            i = 0;
                        }

                    }
                    else
                    {
                        i++;
                    }

                    WebControl control = null;

                    int RelationType = _modelfieldsmodel.RelationType;
                    string RelationTableName = _modelfieldsmodel.RelationTableName;
                    string RelationValueField = _modelfieldsmodel.RelationValueField;
                    string RelationTextField = _modelfieldsmodel.RelationTextField;

                    #region 根据控件类型生成相应的控件
                    switch (_panel_modelfields.ControlType)
                    {
                        case 1://Label
                            control = new Label();
                            break;
                        case 2://TextBox
                            control = new TextBox();
                            if (_modelfieldsmodel.DataType == 4)
                            {
                                control.Attributes["onfocus"] = "WdatePicker();";
                            }
                            break;
                        case 3://DropDownList
                            control = new DropDownList();
                            if (RelationType == 1)//Relation to the dictionary
                            {
                                ((DropDownList)control).DataSource = DictionaryBLL.GetDicCollections(RelationTableName, true);
                            }
                            else if (RelationType == 2)//Relation to the model table
                            {
                                ((DropDownList)control).DataSource = TreeTableBLL.GetRelationTableSourceData(RelationTableName, RelationValueField, RelationTextField);
                            }
                            else
                                break;

                            ((DropDownList)control).DataTextField = "Value";
                            ((DropDownList)control).DataValueField = "Key";
                            ((DropDownList)control).DataBind();
                            if (_modelfieldsmodel.DataType != 5)
                                ((DropDownList)control).Items.Insert(0, new ListItem("请选择...", "0"));
                            else
                                ((DropDownList)control).Items.Insert(0, new ListItem("请选择...", Guid.Empty.ToString()));
                            break;
                        case 4://RadioButtonList
                            control = new RadioButtonList();
                            if (RelationType == 1)//Relation to the dictionary
                            {
                                ((RadioButtonList)control).DataSource = DictionaryBLL.GetDicCollections(RelationTableName, true);
                            }
                            else if (RelationType == 2)//Relation to the model table
                            {
                                ((RadioButtonList)control).DataSource = TreeTableBLL.GetRelationTableSourceData(RelationTableName, RelationValueField, RelationTextField);
                            }
                            else
                                break;

                            ((RadioButtonList)control).RepeatColumns = 6;
                            ((RadioButtonList)control).RepeatDirection = RepeatDirection.Horizontal;
                            ((RadioButtonList)control).DataTextField = "Value";
                            ((RadioButtonList)control).DataValueField = "Key";
                            ((RadioButtonList)control).DataBind();
                            if (((RadioButtonList)control).Items.Count != 0) ((RadioButtonList)control).SelectedIndex = 0;
                            break;
                        case 5://MutiLinesTextBox
                            control = new TextBox();
                            ((TextBox)control).TextMode = TextBoxMode.MultiLine;
                            if (_panel_modelfields.ControlHeight > 0) ((TextBox)control).Height = new Unit(_panel_modelfields.ControlHeight);
                            break;
                        case 6://TextBox supports search
                            control = new MCSSelectControl();
                            if (RelationType == 2)//Relation to the model table
                            {
                                control.ID = _tablemodel.ModelClassName + "_" + _modelfieldsmodel.FieldName;

                                if (_panel_modelfields.SearchPageURL != "")
                                    ((MCSSelectControl)control).PageUrl = _panel_modelfields.SearchPageURL;
                                else if (_modelfieldsmodel.SearchPageURL != "")
                                    ((MCSSelectControl)control).PageUrl = _modelfieldsmodel.SearchPageURL;
                            }
                            break;
                        case 7://MCSTreeControl

                            control = new MCSTreeControl();

                            if (RelationType == 2)//Relation to the model table
                            {
                                control.ID = _tablemodel.ModelClassName + "_" + _modelfieldsmodel.FieldName;

                                if (_modelfieldsmodel.RelationTableName == "MCS_SYS.dbo.Addr_OrganizeCity")
                                {
                                    #region 如果为管理片区字段,则取所能管辖的片区
                                    if (System.Web.HttpContext.Current.Session["AccountType"] == null ||
                                    (int)System.Web.HttpContext.Current.Session["AccountType"] == 1)
                                    {
                                        //员工
                                        Org_StaffBLL staff = new Org_StaffBLL((int)System.Web.HttpContext.Current.Session["UserID"]);
                                        ((MCSTreeControl)control).DataSource = staff.GetStaffOrganizeCity();
                                        ((MCSTreeControl)control).IDColumnName = "ID";
                                        ((MCSTreeControl)control).NameColumnName = "Name";
                                        ((MCSTreeControl)control).ParentColumnName = "SuperID";

                                        if (((MCSTreeControl)control).DataSource.Select("ID = 1").Length > 0 || staff.Model.OrganizeCity == 0)
                                        {
                                            ((MCSTreeControl)control).RootValue = "0";
                                            if (!Page.IsPostBack) ((MCSTreeControl)control).SelectValue = "0";
                                        }
                                        else
                                        {
                                            ((MCSTreeControl)control).RootValue = new Addr_OrganizeCityBLL(staff.Model.OrganizeCity).Model.SuperID.ToString();
                                            if (!Page.IsPostBack) ((MCSTreeControl)control).SelectValue = staff.Model.OrganizeCity.ToString();
                                        }
                                    }
                                    else if ((int)System.Web.HttpContext.Current.Session["AccountType"] == 2 &&
                                     System.Web.HttpContext.Current.Session["OrganizeCity"] != null)
                                    {
                                        //商业客户

                                        int city = (int)System.Web.HttpContext.Current.Session["OrganizeCity"];
                                        Addr_OrganizeCityBLL citybll = new Addr_OrganizeCityBLL(city);
                                        ((MCSTreeControl)control).DataSource = citybll.GetAllChildNodeIncludeSelf();
                                        ((MCSTreeControl)control).RootValue = citybll.Model.SuperID.ToString();
                                        ((MCSTreeControl)control).IDColumnName = "ID";
                                        ((MCSTreeControl)control).NameColumnName = "Name";
                                        ((MCSTreeControl)control).ParentColumnName = "SuperID";

                                        if (!Page.IsPostBack) ((MCSTreeControl)control).SelectValue = city.ToString();
                                    }
                                    #endregion
                                }
                                else if (_modelfieldsmodel.RelationTableName == "MCS_SYS.dbo.Addr_OfficialCity")
                                {
                                    ((MCSTreeControl)control).TableName = "MCS_SYS.dbo.Addr_OfficialCity";
                                    ((MCSTreeControl)control).IDColumnName = "ID";
                                    ((MCSTreeControl)control).NameColumnName = "Name";
                                    ((MCSTreeControl)control).ParentColumnName = "SuperID";
                                    ((MCSTreeControl)control).RootValue = "0";
                                    if (!Page.IsPostBack) ((MCSTreeControl)control).SelectValue = "0";
                                }
                                else
                                {
                                    ((MCSTreeControl)control).TableName = RelationTableName;
                                    ((MCSTreeControl)control).IDColumnName = RelationValueField;
                                    ((MCSTreeControl)control).NameColumnName = RelationTextField;
                                    ((MCSTreeControl)control).ParentColumnName = "SuperID";
                                }
                            }
                            break;
                    }
                    #endregion

                    control.ID = _tablemodel.ModelClassName + "_" + _modelfieldsmodel.FieldName;
                    control.Enabled = _panel_modelfields.Enable.ToUpper() == "Y";

                    if (_panel_modelfields.ControlWidth > 0) control.Width = _panel_modelfields.ControlWidth;

                    tc_control.Controls.Add(control);

                    #region 如果是文本框时,加上输入验证控件
                    if (_panel_modelfields.IsRequireField == "Y")
                    {
                        Label lbl_reqinfo = new Label();
                        lbl_reqinfo.Text = "&nbsp;&nbsp;*";
                        lbl_reqinfo.ForeColor = System.Drawing.Color.Red;
                        tc_control.Controls.Add(lbl_reqinfo);
                    }

                    if (_panel_modelfields.ControlType == 2 || _panel_modelfields.ControlType == 5)
                    {
                        if (_panel_modelfields.IsRequireField == "Y")
                        {
                            RequiredFieldValidator _requiredfieldvalidator = new RequiredFieldValidator();
                            _requiredfieldvalidator.ControlToValidate = control.ID;
                            _requiredfieldvalidator.Display = ValidatorDisplay.Dynamic;
                            _requiredfieldvalidator.ErrorMessage = "必填";
                            _requiredfieldvalidator.ForeColor = System.Drawing.Color.Red;
                            _requiredfieldvalidator.ValidationGroup = _validationgroup;

                            tc_control.Controls.Add(_requiredfieldvalidator);
                        }

                        if (_panel_modelfields.RegularExpression != "")
                        {
                            RegularExpressionValidator _regularexpressionvalidator = new RegularExpressionValidator();
                            _regularexpressionvalidator.ControlToValidate = control.ID;
                            _regularexpressionvalidator.ErrorMessage = "数据格式不正确";
                            _regularexpressionvalidator.ForeColor = System.Drawing.Color.Red;
                            _regularexpressionvalidator.ValidationExpression = _panel_modelfields.RegularExpression;
                            _regularexpressionvalidator.ValidationGroup = ValidationGroup;
                            _regularexpressionvalidator.Display = ValidatorDisplay.Dynamic;
                            tc_control.Controls.Add(_regularexpressionvalidator);
                        }
                        else
                        {
                            if (_modelfieldsmodel.DataType == 1 || _modelfieldsmodel.DataType == 2 || _modelfieldsmodel.DataType == 4)        //非varchar 字符串
                            {
                                CompareValidator _comparevalidator = new CompareValidator();
                                _comparevalidator.ControlToValidate = control.ID;
                                _comparevalidator.Operator = ValidationCompareOperator.DataTypeCheck;
                                _comparevalidator.Display = ValidatorDisplay.Dynamic;
                                _comparevalidator.ForeColor = System.Drawing.Color.Red;
                                _comparevalidator.ValidationGroup = _validationgroup;

                                if (_modelfieldsmodel.DataType == 1)//int
                                {
                                    _comparevalidator.Type = ValidationDataType.Integer;
                                    _comparevalidator.ErrorMessage = "应为整数";

                                }
                                if (_modelfieldsmodel.DataType == 2)//decimal
                                {
                                    _comparevalidator.Type = ValidationDataType.Double;
                                    _comparevalidator.ErrorMessage = "应为数字";
                                }
                                if (_modelfieldsmodel.DataType == 4)//datetime
                                {
                                    _comparevalidator.Type = ValidationDataType.Date;
                                    _comparevalidator.ErrorMessage = "日期格式不正确";
                                }
                                tc_control.Controls.Add(_comparevalidator);
                            }
                        }
                    }
                    #endregion

                    if (!string.IsNullOrEmpty(_panel_modelfields.Description))
                    {
                        Label lb = new Label();
                        lb.Text = "  " + _panel_modelfields.Description;
                        tc_control.Controls.Add(lb);
                    }

                    tr_panel_detail.Cells.Add(tc_control);
                    #endregion

                    #region 将控件记录到字段控件HashTable中
                    FieldControlInfo fieldcontrolinfo = new FieldControlInfo();

                    fieldcontrolinfo.FieldID = _modelfieldsmodel.ID;
                    fieldcontrolinfo.FieldName = _modelfieldsmodel.FieldName;
                    fieldcontrolinfo.ModelName = _tablemodel.ModelClassName;
                    fieldcontrolinfo.ControlType = _panel_modelfields.ControlType;
                    fieldcontrolinfo.ControlName = control.ID;
                    fieldcontrolinfo.DisplayMode = _panel_modelfields.DisplayMode;
                    fieldcontrolinfo.Panel_Field_ID = _panel_modelfields.ID;
                    _htFieldControlsInfo.Add(fieldcontrolinfo.ControlName, fieldcontrolinfo);
                    #endregion
                }
                #endregion

                tc_panel.Controls.Add(tb_panel_content);
                tr_panel.Cells.Add(tc_panel);
                T_Content.Rows.Add(tr_panel);
            }
            ViewState["FieldControlsInfo"] = _htFieldControlsInfo;
        }
Ejemplo n.º 20
0
        /// <summary>
        /// 用户登录
        /// </summary>
        /// <param name="UserName">用户名</param>
        /// <param name="EncryptPassword">加密后的登录密码</param>
        /// <param name="DeviceCode">设备识别号</param>
        /// <param name="AuthKey">输出:授权码</param>
        /// <param name="ExtParams">扩展登录参数Json格式,包括AppCode、AppVersion、DeviceModel、DeviceOS、OSVersion、NetworkType
        /// 如:{"AppCode":"YSLRMAPP","AppVersion":43,"DeviceModel":"SM-G7108V","DeviceOS":"Android","OSVersion":"4.3","NetworkType":"ChinaMobile TD-SCDMA"}
        /// </param>
        /// <returns>0:登录成功
        /// -1001:用户名或密码错误,登录失败
        /// -1002:未能获取到对称加密密钥
        /// -1003:设备号未在可登录的列表中登记
        /// -1004:当前用户不允许从该设备号登录
        /// -1005:登录失败
        /// -1009:APP版本过低必须更新
        /// </returns>
        public static int Login(string UserName, string EncryptPassword, string DeviceCode, string ExtParams, out string AuthKey)
        {
            LogWriter.WriteLog("UserLogin.LoginEx2:UserName="******",EncryptPassword="******",DeviceCode=" + DeviceCode + ",ExtParams=" + ExtParams);
            AuthKey = "";

            Hashtable hs = string.IsNullOrEmpty(ExtParams) ? new Hashtable() : JsonConvert.DeserializeObject <Hashtable>(ExtParams);

            #region 判断是否符合最新版本要求
            if (hs["AppCode"] != null)
            {
                int MinAppVersion = 0;
                if (hs["AppCode"].ToString() == "PBMSAPP")
                {
                    MinAppVersion = ConfigHelper.GetConfigInt("MinAppVersion");
                }
                else if (hs["AppCode"].ToString() == "PBMSAPP-iOS")
                {
                    MinAppVersion = ConfigHelper.GetConfigInt("MinAppVersion-iOS");
                }

                if (MinAppVersion > 0 && hs["AppVersion"] != null)
                {
                    int AppVersion = 0;
                    if (int.TryParse(hs["AppVersion"].ToString(), out AppVersion) && AppVersion < MinAppVersion)
                    {
                        LogWriter.WriteLog("UserLogin.LoginEx2: AppVersion too lower! UserName="******",DeviceCode=" + DeviceCode + ",AppVersion=" + AppVersion.ToString());
                        return(-1009);       //APP版本过低必须更新
                    }
                }
            }

            #endregion

            #region 组织登录扩展属性
            string ExtPropertys = "";
            try
            {
                IList <UD_TableList> tables = UD_TableListBLL.GetModelList("Name='MCS_SYS.dbo.User_Online'");
                if (tables.Count > 0)
                {
                    IList <UD_ModelFields> models = UD_ModelFieldsBLL.GetModelList("Tableid='" + tables[0].ID.ToString() + "' AND Flag='N'");
                    foreach (UD_ModelFields item in models.OrderBy(p => p.Position))
                    {
                        if (hs.ContainsKey(item.FieldName))
                        {
                            ExtPropertys += hs[item.FieldName].ToString();
                        }
                        ExtPropertys += "|";
                    }
                }
            }
            catch { }
            #endregion

            string         cachekey = "EBMIF_DeviceCryptKey-" + DeviceCode;
            DeviceCryptKey key      = null;

            #region 从数据库中加载保存的密钥
            if (key == null)
            {
                string _keystr = "";
                if (UserBLL.AppCryptKey_LoadKey(DeviceCode, out _keystr) == 0 && !string.IsNullOrEmpty(_keystr))
                {
                    try
                    {
                        key = JsonConvert.DeserializeObject <DeviceCryptKey>(_keystr);
                        if (key != null)
                        {
                            DataCache.SetCache(cachekey, key, DateTime.Now.AddMinutes(5), System.Web.Caching.Cache.NoSlidingExpiration);
                        }
                    }
                    catch { }
                }
            }
            #endregion

            int    ret      = 0;
            string Password = EncryptPassword;
            if (key == null)
            {
                LogWriter.WriteLog("UserLogin.LoginEx: Get DeviceCrytKey Null! UserName="******",DeviceCode=" + DeviceCode);
                return(-1002);  //未能获取到对称加密密钥
            }
            else
            {
                ret = AESProvider.DecryptText(EncryptPassword, key.AESKey, key.AESIV, out Password);
                if (ret < 0)
                {
                    LogWriter.WriteLog("UserLogin.LoginEx! AESProvider.DecryptText Ret=" + ret.ToString() + ",DeviceCode=" + DeviceCode +
                                       ",EncryptPassword="******",AESKey=" + key.AESKey + ",AESIV=" + key.AESIV);
                    return(-1002);
                }
            }

            ret = userlogin(UserName, Password, DeviceCode, ExtPropertys, out AuthKey);

            if (ConfigHelper.GetConfigBool("DebugMode") && key != null)
            {
                LogWriter.WriteLog("UserLogin.LoginEx:Login Return ret=" + ret.ToString() + ",DeviceCode=" + DeviceCode
                                   + ",AESKey=" + key.AESKey + ",AESIV=" + key.AESIV + ",AuthKey=" + AuthKey);
            }

            switch (ret)
            {
            case -1003:
                //设备号未在可登录的列表中登记
                return(-1003);

            case -3:
            case -5:
            case -10:
                //当前用户不允许从该设备号登录
                return(-1004);

            case -2:
            case -11:
            case -12:
            case -13:
                //用户名或密码错误,登录失败
                return(-1001);

            case 1:
                //登录成功
                return(0);

            default:
                //登录失败
                return(-1005);
            }
        }
Ejemplo n.º 21
0
        /// <summary>
        /// 用IList(IModel)数据源来绑定GridView
        /// </summary>
        /// <param name="m"></param>
        public void BindGrid <T>(IList <T> source)
        {
            this.DataSource = source;
            this.DataBind();

            if (source.Count == 0)
            {
                return;
            }

            IList <UD_TableList> _tables = new UD_TableListBLL()._GetModelList("ModelName='" + ((IModel)source[0]).ModelName + "'");

            if (_tables.Count == 0)
            {
                return;
            }
            UD_TableList table = _tables[0];

            IList <UD_ModelFields> fields = new UD_TableListBLL(table.ID).GetModelFields();

            for (int i = 0; i < Columns.Count; i++)
            {
                DataControlField column = Columns[i];

                if (column.GetType().Name == "BoundField")
                {
                    BoundField field = (BoundField)column;
                    if (!column.Visible)
                    {
                        continue;
                    }

                    IList <UD_ModelFields> _models = UD_ModelFieldsBLL.GetModelList("TableID='" + table.ID.ToString() + "' AND FieldName='" + field.DataField + "'");
                    if (_models.Count == 0)
                    {
                        continue;
                    }
                    UD_ModelFields model = _models[0];

                    switch (model.RelationType)
                    {
                    case 1:         //关联字典表
                        foreach (GridViewRow row in Rows)
                        {
                            Dictionary <string, Dictionary_Data> dic = DictionaryBLL.GetDicCollections(model.RelationTableName, false);
                            row.Cells[i].Text = dic.ContainsKey(row.Cells[i].Text) ? dic[row.Cells[i].Text].Name : "";
                        }
                        break;

                    case 2:         //关联实体表
                        foreach (GridViewRow row in Rows)
                        {
                            row.Cells[i].Text = TreeTableBLL.GetRelationTableDataValue(model.RelationTableName, model.RelationValueField, model.RelationTextField, row.Cells[i].Text);
                        }
                        break;
                    }

                    if (model.DataType == 4)  //日期型
                    {
                        foreach (GridViewRow row in Rows)
                        {
                            if (row.Cells[i].Text.StartsWith("1900-01-01"))
                            {
                                row.Cells[i].Text = "";
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 22
0
        private string GenarateSelectSQL(out Dictionary <string, Rpt_DataSetFields> dicTreeColumnList)
        {
            string _sqlstring     = "";
            string _selectstr     = "SELECT ";
            string _fromstr       = "";
            string _selectfromstr = "";           //字段如果是关联时,临时生成的from sql

            dicTreeColumnList = new Dictionary <string, Rpt_DataSetFields>();

            if (_m.CommandType != 3)
            {
                return("");
            }

            #region create the select string
            IList <Rpt_DataSetFields> _fields = this.GetFields();

            foreach (Rpt_DataSetFields _field in _fields)
            {
                if (_field.IsComputeField == "Y")
                {
                    _selectstr += _field.Expression + " AS " + _field.FieldName + ",";
                }
                else
                {
                    UD_ModelFields _modelfield = new UD_ModelFieldsBLL(_field.FieldID, true).Model;
                    UD_TableList   _tablemodel = new UD_TableListBLL(_modelfield.TableID, true).Model;

                    string _fieldfullname = _tablemodel.ModelClassName + "_" + _modelfield.FieldName;

                    #region 判断字段关联类型,决定如果创建SQL
                    switch (_modelfield.RelationType)
                    {
                    case 1:                          //Relation to dic
                        if (_field.DisplayMode == 1) //Bound the id value of the field
                        {
                            if (_modelfield.Flag == "Y")
                            {
                                _selectstr += _tablemodel.Name + "." + _modelfield.FieldName + " AS " + _fieldfullname + ",";
                            }
                            else    //扩展字段
                            {
                                _selectstr += "MCS_SYS.[dbo].[UF_Spilt](" + _tablemodel.Name + ".ExtPropertys,'|'," +
                                              _modelfield.Position.ToString() + ") AS " + _fieldfullname + ",";
                            }
                        }
                        else    //Bound the text value of the field
                        {
                            //计算出关联字典表的别名"_vname"
                            string _vname = "V_Dictionary_Data" + "_" + _modelfield.FieldName;
                            if (_modelfield.Flag == "Y")
                            {
                                _selectstr     += _vname + ".Name" + " AS " + _fieldfullname + ",";
                                _selectfromstr += " left join V_Dictionary_Data AS " + _vname + " ON " + _tablemodel.Name + "." + _modelfield.FieldName + "=" + _vname + ".Code AND " + _vname + ".TableName='" + _modelfield.RelationTableName + "' ";
                            }
                            else    //扩展字段
                            {
                                _selectstr     += _vname + ".Name" + " AS " + _fieldfullname + ",";
                                _selectfromstr += " left join V_Dictionary_Data AS " + _vname + " ON MCS_SYS.[dbo].[UF_Spilt](" + _tablemodel.Name + ".ExtPropertys,'|'," + _modelfield.Position.ToString() + ") =" + _vname + ".Code AND " + _vname + ".TableName='" + _modelfield.RelationTableName + "' ";
                            }
                        }
                        break;

                    case 2:    //Relation to model table
                        if (_field.TreeLevel > 0 && new UD_TableListBLL(_modelfield.RelationTableName).Model.TreeFlag == "Y")
                        {
                            #region 字段关联到树形结构表,且要显示上层父结点信息
                            _fieldfullname += _field.TreeLevel.ToString();

                            if (_modelfield.RelationTableName == "MCS_SYS.dbo.Addr_OrganizeCity")
                            {
                                string tmpfieldname = "";
                                if (_modelfield.Flag == "Y")
                                {
                                    tmpfieldname = _tablemodel.Name + "." + _modelfield.FieldName;
                                }
                                else    //扩展字段
                                {
                                    tmpfieldname = "[MCS_SYS].[dbo].[UF_Spilt](" + _tablemodel.Name + ".ExtPropertys,'|'," + _modelfield.Position.ToString() + ")";
                                }

                                if (_field.DisplayMode == 1)
                                {
                                    _selectstr += "[MCS_SYS].[dbo].[UF_GetSuperOrganizeCityByLevel02](" + tmpfieldname + "," + _field.TreeLevel.ToString() + ")" + " AS " + _fieldfullname + ",";
                                }
                                else
                                {
                                    _selectstr += "[MCS_SYS].[dbo].[UF_GetSuperOrganizeCityNameByLevel02](" + tmpfieldname + "," + _field.TreeLevel.ToString() + ")" + " AS " + _fieldfullname + ",";
                                }
                            }
                            else if (_modelfield.RelationTableName == "MCS_SYS.dbo.Addr_OrganizeCity")
                            {
                                string tmpfieldname = "";
                                if (_modelfield.Flag == "Y")
                                {
                                    tmpfieldname = _tablemodel.Name + "." + _modelfield.FieldName;
                                }
                                else    //扩展字段
                                {
                                    tmpfieldname = "[MCS_SYS].[dbo].[UF_Spilt](" + _tablemodel.Name + ".ExtPropertys,'|'," + _modelfield.Position.ToString() + ")";
                                }

                                if (_field.DisplayMode == 1)
                                {
                                    _selectstr += "[MCS_SYS].[dbo].[UF_GetSuperOfficialCityByLevel02](" + tmpfieldname + "," + _field.TreeLevel.ToString() + ")" + " AS " + _fieldfullname + ",";
                                }
                                else
                                {
                                    _selectstr += "[MCS_SYS].[dbo].[UF_GetSuperOfficialCityNameByLevel02](" + tmpfieldname + "," + _field.TreeLevel.ToString() + ")" + " AS " + _fieldfullname + ",";
                                }
                            }
                            else
                            {
                                if (_modelfield.Flag == "Y")
                                {
                                    _selectstr += _tablemodel.Name + "." + _modelfield.FieldName + " AS " + _fieldfullname + ",";
                                }
                                else    //扩展字段
                                {
                                    _selectstr += "MCS_SYS.[dbo].[UF_Spilt](" + _tablemodel.Name + ".ExtPropertys,'|'," + _modelfield.Position.ToString() + ") AS " + _fieldfullname + ",";
                                }

                                dicTreeColumnList.Add(_fieldfullname, _field);
                            }
                            #endregion
                        }
                        else
                        {
                            #region  需关联到树形结构表
                            if (_field.DisplayMode == 1)    //Bound the id value of the field
                            {
                                if (_modelfield.Flag == "Y")
                                {
                                    _selectstr += _tablemodel.Name + "." + _modelfield.FieldName + " AS " + _fieldfullname + ",";
                                }
                                else    //扩展字段
                                {
                                    _selectstr += "MCS_SYS.[dbo].[UF_Spilt](" + _tablemodel.Name + ".ExtPropertys,'|'," + _modelfield.Position.ToString() + ") AS " + _fieldfullname + ",";
                                }
                            }
                            else    //Bound the text value of the field
                            {
                                #region 计算出关联表的别名"_vname"
                                string _vname = "";
                                int    pos    = _modelfield.RelationTableName.LastIndexOf('.');
                                if (pos >= 0)
                                {
                                    _vname = _modelfield.RelationTableName.Substring(pos + 1) + "_" + _modelfield.FieldName;
                                }
                                else
                                {
                                    _vname = _modelfield.RelationTableName + "_" + _modelfield.FieldName;
                                }
                                #endregion

                                if (_modelfield.Flag == "Y")
                                {
                                    _selectstr     += _vname + "." + _modelfield.RelationTextField + " AS " + _fieldfullname + ",";
                                    _selectfromstr += " left join " + _modelfield.RelationTableName + " AS " + _vname + " ON " + _tablemodel.Name + "." + _modelfield.FieldName + "=" + _vname + "." + _modelfield.RelationValueField;
                                }
                                else    //扩展字段
                                {
                                    _selectstr     += _vname + "." + _modelfield.RelationTextField + " AS " + _fieldfullname + ",";
                                    _selectfromstr += " left join " + _modelfield.RelationTableName + " AS " + _vname + " ON MCS_SYS.[dbo].[UF_Spilt](" + _tablemodel.Name + ".ExtPropertys,'|'," + _modelfield.Position.ToString() + ") =" + _vname + "." + _modelfield.RelationValueField;
                                }
                            }
                            #endregion
                        }

                        break;

                    default:    //No relation
                        if (_modelfield.Flag == "Y")
                        {
                            _selectstr += _tablemodel.Name + "." + _modelfield.FieldName + " AS " + _fieldfullname + ",";
                        }
                        else
                        {
                            _selectstr += "MCS_SYS.[dbo].[UF_Spilt](" + _tablemodel.Name + ".ExtPropertys,'|'," + _modelfield.Position.ToString() + ") AS " + _fieldfullname + ",";
                        }
                        break;
                    }
                    #endregion
                }
            }
            _selectstr = _selectstr.Substring(0, _selectstr.Length - 1);


            #endregion

            #region create the from string of sql
            IList <Rpt_DataSetTableRelations> _tablerelations = this.GetTableRelations();
            IList <Rpt_DataSetTables>         _tables         = this.GetTables();
            if (_tables.Count == 1 || _tablerelations.Count == 0)
            {
                _fromstr = " FROM " + new UD_TableListBLL(_tables[0].TableID, true).Model.Name;
            }
            else
            {
                foreach (Rpt_DataSetTableRelations _tablerelation in _tablerelations)
                {
                    string _parenttablename = new UD_TableListBLL(_tablerelation.ParentTableID, true).Model.Name;
                    string _childtablename  = new UD_TableListBLL(_tablerelation.ChildTableID, true).Model.Name;

                    UD_ModelFields _parentfield = new UD_ModelFieldsBLL(_tablerelation.ParentFieldID, true).Model;
                    UD_ModelFields _childfield  = new UD_ModelFieldsBLL(_tablerelation.ChildFieldID, true).Model;

                    if (_tablerelation.JoinMode == "")
                    {
                        _tablerelation.JoinMode = "LEFT JOIN";
                    }

                    if (_fromstr == "")
                    {
                        _fromstr = " FROM " + _parenttablename + " ";
                    }

                    _fromstr += " " + _tablerelation.JoinMode + " " + _childtablename + " ON ";

                    if (_parentfield.Flag == "Y" && _childfield.Flag == "Y")
                    {
                        _fromstr += _parenttablename + ".[" + _parentfield.FieldName + "] = " + _childtablename + ".[" + _childfield.FieldName + "] ";
                    }
                    else
                    {
                        //关联字段中,有一个字段为扩展字段
                        if (_parentfield.Flag == "Y")
                        {
                            _fromstr += "CONVERT(VarChar," + _parenttablename + "." + _parentfield.FieldName + ")";
                        }
                        else
                        {
                            _fromstr += "MCS_SYS.[dbo].[UF_Spilt](" + _parenttablename + ".ExtPropertys,'|'," + _parentfield.Position.ToString() + ")";
                        }

                        _fromstr += " = ";

                        if (_childfield.Flag == "Y")
                        {
                            _fromstr += "CONVERT(VarChar," + _childtablename + "." + _childfield.FieldName + ")";
                        }
                        else
                        {
                            _fromstr += "MCS_SYS.[dbo].[UF_Spilt](" + _childtablename + ".ExtPropertys,'|'," + _childfield.Position.ToString() + ")";
                        }
                    }

                    if (_tablerelation.RelationCondition != "")
                    {
                        _fromstr += " AND " + _tablerelation.RelationCondition + " ";
                    }
                }
            }

            if (_selectfromstr != "")
            {
                _fromstr += _selectfromstr;
            }

            _sqlstring = _selectstr + _fromstr;
            #endregion

            if (_m.ConditionSQL != "")
            {
                _sqlstring += " WHERE " + _m.ConditionSQL;
            }

            if (_m.OrderString != "")
            {
                _sqlstring += " ORDER BY " + _m.OrderString;
            }

            return(_sqlstring);
        }
    protected void ddl_TableName_SelectedIndexChanged(object sender, EventArgs e)
    {
        IList<UD_ModelFields> fields = UD_ModelFieldsBLL.GetModelList("TableID='" + ddl_TableName.SelectedValue + "'");

        foreach (Rpt_DataSetFields f in new Rpt_DataSetBLL((Guid)ViewState["ID"]).GetFields())
        {
            UD_ModelFields field = fields.FirstOrDefault(p => p.ID == f.FieldID);
            if (field != null)
            {
                UD_TableList table = new UD_TableListBLL(field.RelationTableName).Model;
                if (field.RelationType == 2 && table != null && table.TreeFlag == "Y") continue;

                fields.Remove(field);
            }
        }

        cbxl_Fields.DataSource = fields;
        cbxl_Fields.DataBind();
    }
Ejemplo n.º 24
0
        /// <summary>
        /// Init the components of the panel through the special pageid
        /// </summary>
        private void InitComponents()
        {
            HtmlTable T_Content = new HtmlTable();

            T_Content.CellPadding = 0;
            T_Content.CellSpacing = 0;
            T_Content.Width       = "100%";
            T_Content.Border      = 0;
            T_Content.ID          = "T_Content_" + ID;
            this.Controls.Add(T_Content);


            UD_DetailViewBLL _DetailViewBll = new UD_DetailViewBLL(DetailViewCode, true);

            IList <UD_Panel> _panellist           = _DetailViewBll.GetDetailPanels();
            Hashtable        _htFieldControlsInfo = new Hashtable();

            foreach (UD_Panel _panelmodel in _panellist)
            {
                HtmlTableRow tr_panel = new HtmlTableRow();//Create one TableRow for a panel
                tr_panel.ID = _panelmodel.Code;
                if (_panelmodel.Enable.ToUpper() == "N")
                {
                    tr_panel.Visible = false;
                }
                HtmlTableCell tc_panel     = new HtmlTableCell();
                string        _tablestytle = _panelmodel.TableStyle;
                string[]      _tablestyles = _panelmodel.TableStyle.Split(new char[] { ',' });

                if (_tablestyles.Length < 3)
                {
                    _tablestyles = ("tabForm,dataLabel,dataField").Split(new char[] { ',' });
                }

                #region The title of the panel
                if (_panelmodel.Name != "")
                {
                    HtmlTable tb_panel_title = new HtmlTable();
                    tb_panel_title.CellPadding         = 0;
                    tb_panel_title.CellSpacing         = 0;
                    tb_panel_title.Width               = "100%";
                    tb_panel_title.Height              = "28px";
                    tb_panel_title.Border              = 0;
                    tb_panel_title.Attributes["class"] = "h3Row";
                    HtmlTableRow  tr_panel_title = new HtmlTableRow();
                    HtmlTableCell tc_panel_title = new HtmlTableCell();
                    tc_panel_title.InnerHtml = "<h3>" + _panelmodel.Name + "</h3>";
                    tr_panel_title.Cells.Add(tc_panel_title);
                    tb_panel_title.Rows.Add(tr_panel_title);
                    tc_panel.Controls.Add(tb_panel_title);
                }
                #endregion

                #region The content of the panel
                IList <UD_Panel_ModelFields> fields = new UD_PanelBLL(_panelmodel.ID, true).GetModelFields();

                int FieldCount = _panelmodel.FieldCount;

                HtmlTable tb_panel_content = new HtmlTable();
                tb_panel_content.Width = "100%";
                tb_panel_content.Attributes["class"] = _tablestyles[0];
                int i = 0;
                foreach (UD_Panel_ModelFields _panel_modelfields in fields)
                {
                    if (_panel_modelfields.Visible == "N")
                    {
                        continue;
                    }

                    UD_ModelFields _modelfieldsmodel = new UD_ModelFieldsBLL(_panel_modelfields.FieldID, true).Model;
                    UD_TableList   _tablemodel       = new UD_TableListBLL(_modelfieldsmodel.TableID, true).Model;

                    #region 判断该控件是否已存在
                    if (_htFieldControlsInfo.Contains(_tablemodel.ModelClassName + "_" + _modelfieldsmodel.FieldName))
                    {
                        continue;
                    }
                    #endregion

                    #region 判断是否要增加新行
                    HtmlTableRow tr_panel_detail;
                    if (i >= FieldCount || i == 0)
                    {
                        tr_panel_detail = new HtmlTableRow();
                        tb_panel_content.Rows.Add(tr_panel_detail);
                        i = 0;
                    }
                    else
                    {
                        tr_panel_detail = tb_panel_content.Rows[tb_panel_content.Rows.Count - 1];
                    }
                    #endregion

                    #region 增加Label Cell
                    HtmlTableCell tc_displayname = new HtmlTableCell();
                    tc_displayname.Attributes["Class"] = _tablestyles[1];
                    tc_displayname.InnerText           = string.IsNullOrEmpty(_panel_modelfields.LabelText) ?
                                                         _modelfieldsmodel.DisplayName : _panel_modelfields.LabelText;
                    if (tc_displayname.InnerText.Length <= 6)
                    {
                        tc_displayname.Attributes["Style"] = "width: 80px; height: 18px;";
                    }
                    else
                    {
                        tc_displayname.Attributes["Style"] = "width: 100px; height: 18px;";
                    }
                    tc_displayname.Attributes["nowrap"] = "nowrap";
                    tr_panel_detail.Cells.Add(tc_displayname);
                    #endregion

                    #region 增加Field Cell
                    HtmlTableCell tc_control = new HtmlTableCell();
                    tc_control.Attributes["Class"] = _tablestyles[2];
                    if (_panel_modelfields.ColSpan > 0)
                    {
                        if (i + _panel_modelfields.ColSpan <= FieldCount)
                        {
                            tc_control.ColSpan = 2 * _panel_modelfields.ColSpan - 1;
                            i = i + _panel_modelfields.ColSpan;
                        }
                        else
                        {
                            tc_control.ColSpan = 2 * (FieldCount - i) - 1;
                            i = 0;
                        }
                    }
                    else
                    {
                        i++;
                    }

                    WebControl control = null;

                    int    RelationType       = _modelfieldsmodel.RelationType;
                    string RelationTableName  = _modelfieldsmodel.RelationTableName;
                    string RelationValueField = _modelfieldsmodel.RelationValueField;
                    string RelationTextField  = _modelfieldsmodel.RelationTextField;

                    #region 根据控件类型生成相应的控件
                    switch (_panel_modelfields.ControlType)
                    {
                    case 1:    //Label
                        control = new Label();
                        break;

                    case 2:    //TextBox
                        control = new TextBox();
                        if (_modelfieldsmodel.DataType == 4)
                        {
                            control.Attributes["onfocus"] = "WdatePicker();";
                        }
                        break;

                    case 3:                    //DropDownList
                        control = new DropDownList();
                        if (RelationType == 1) //Relation to the dictionary
                        {
                            ((DropDownList)control).DataSource = DictionaryBLL.GetDicCollections(RelationTableName, true);
                        }
                        else if (RelationType == 2)    //Relation to the model table
                        {
                            ((DropDownList)control).DataSource = TreeTableBLL.GetRelationTableSourceData(RelationTableName, RelationValueField, RelationTextField);
                        }
                        else
                        {
                            break;
                        }

                        ((DropDownList)control).DataTextField  = "Value";
                        ((DropDownList)control).DataValueField = "Key";
                        ((DropDownList)control).DataBind();
                        if (_modelfieldsmodel.DataType != 5)
                        {
                            ((DropDownList)control).Items.Insert(0, new ListItem("请选择...", "0"));
                        }
                        else
                        {
                            ((DropDownList)control).Items.Insert(0, new ListItem("请选择...", Guid.Empty.ToString()));
                        }
                        break;

                    case 4:                    //RadioButtonList
                        control = new RadioButtonList();
                        if (RelationType == 1) //Relation to the dictionary
                        {
                            ((RadioButtonList)control).DataSource = DictionaryBLL.GetDicCollections(RelationTableName, true);
                        }
                        else if (RelationType == 2)    //Relation to the model table
                        {
                            ((RadioButtonList)control).DataSource = TreeTableBLL.GetRelationTableSourceData(RelationTableName, RelationValueField, RelationTextField);
                        }
                        else
                        {
                            break;
                        }

                        ((RadioButtonList)control).RepeatColumns   = 6;
                        ((RadioButtonList)control).RepeatDirection = RepeatDirection.Horizontal;
                        ((RadioButtonList)control).DataTextField   = "Value";
                        ((RadioButtonList)control).DataValueField  = "Key";
                        ((RadioButtonList)control).DataBind();
                        if (((RadioButtonList)control).Items.Count != 0)
                        {
                            ((RadioButtonList)control).SelectedIndex = 0;
                        }
                        break;

                    case 5:    //MutiLinesTextBox
                        control = new TextBox();
                        ((TextBox)control).TextMode = TextBoxMode.MultiLine;
                        if (_panel_modelfields.ControlHeight > 0)
                        {
                            ((TextBox)control).Height = new Unit(_panel_modelfields.ControlHeight);
                        }
                        break;

                    case 6:                    //TextBox supports search
                        control = new MCSSelectControl();
                        if (RelationType == 2) //Relation to the model table
                        {
                            control.ID = _tablemodel.ModelClassName + "_" + _modelfieldsmodel.FieldName;

                            if (_panel_modelfields.SearchPageURL != "")
                            {
                                ((MCSSelectControl)control).PageUrl = _panel_modelfields.SearchPageURL;
                            }
                            else if (_modelfieldsmodel.SearchPageURL != "")
                            {
                                ((MCSSelectControl)control).PageUrl = _modelfieldsmodel.SearchPageURL;
                            }
                        }
                        break;

                    case 7:    //MCSTreeControl

                        control = new MCSTreeControl();


                        if (RelationType == 2)    //Relation to the model table
                        {
                            control.ID = _tablemodel.ModelClassName + "_" + _modelfieldsmodel.FieldName;

                            if (_modelfieldsmodel.RelationTableName == "MCS_SYS.dbo.Addr_OrganizeCity")
                            {
                                #region 如果为管理片区字段,则取所能管辖的片区
                                if (System.Web.HttpContext.Current.Session["AccountType"] == null ||
                                    (int)System.Web.HttpContext.Current.Session["AccountType"] == 1)
                                {
                                    //员工
                                    Org_StaffBLL staff = new Org_StaffBLL((int)System.Web.HttpContext.Current.Session["UserID"]);
                                    ((MCSTreeControl)control).DataSource       = staff.GetStaffOrganizeCity();
                                    ((MCSTreeControl)control).IDColumnName     = "ID";
                                    ((MCSTreeControl)control).NameColumnName   = "Name";
                                    ((MCSTreeControl)control).ParentColumnName = "SuperID";

                                    if (((MCSTreeControl)control).DataSource.Select("ID = 1").Length > 0 || staff.Model.OrganizeCity == 0)
                                    {
                                        ((MCSTreeControl)control).RootValue = "0";
                                        if (!Page.IsPostBack)
                                        {
                                            ((MCSTreeControl)control).SelectValue = "0";
                                        }
                                    }
                                    else
                                    {
                                        ((MCSTreeControl)control).RootValue = new Addr_OrganizeCityBLL(staff.Model.OrganizeCity).Model.SuperID.ToString();
                                        if (!Page.IsPostBack)
                                        {
                                            ((MCSTreeControl)control).SelectValue = staff.Model.OrganizeCity.ToString();
                                        }
                                    }
                                }
                                else if ((int)System.Web.HttpContext.Current.Session["AccountType"] == 2 &&
                                         System.Web.HttpContext.Current.Session["OrganizeCity"] != null)
                                {
                                    //商业客户

                                    int city = (int)System.Web.HttpContext.Current.Session["OrganizeCity"];
                                    Addr_OrganizeCityBLL citybll = new Addr_OrganizeCityBLL(city);
                                    ((MCSTreeControl)control).DataSource       = citybll.GetAllChildNodeIncludeSelf();
                                    ((MCSTreeControl)control).RootValue        = citybll.Model.SuperID.ToString();
                                    ((MCSTreeControl)control).IDColumnName     = "ID";
                                    ((MCSTreeControl)control).NameColumnName   = "Name";
                                    ((MCSTreeControl)control).ParentColumnName = "SuperID";

                                    if (!Page.IsPostBack)
                                    {
                                        ((MCSTreeControl)control).SelectValue = city.ToString();
                                    }
                                }
                                #endregion
                            }
                            else if (_modelfieldsmodel.RelationTableName == "MCS_SYS.dbo.Addr_OfficialCity")
                            {
                                ((MCSTreeControl)control).TableName        = "MCS_SYS.dbo.Addr_OfficialCity";
                                ((MCSTreeControl)control).IDColumnName     = "ID";
                                ((MCSTreeControl)control).NameColumnName   = "Name";
                                ((MCSTreeControl)control).ParentColumnName = "SuperID";
                                ((MCSTreeControl)control).RootValue        = "0";
                                if (!Page.IsPostBack)
                                {
                                    ((MCSTreeControl)control).SelectValue = "0";
                                }
                            }
                            else
                            {
                                ((MCSTreeControl)control).TableName        = RelationTableName;
                                ((MCSTreeControl)control).IDColumnName     = RelationValueField;
                                ((MCSTreeControl)control).NameColumnName   = RelationTextField;
                                ((MCSTreeControl)control).ParentColumnName = "SuperID";
                            }
                        }
                        break;
                    }
                    #endregion

                    control.ID      = _tablemodel.ModelClassName + "_" + _modelfieldsmodel.FieldName;
                    control.Enabled = _panel_modelfields.Enable.ToUpper() == "Y";

                    if (_panel_modelfields.ControlWidth > 0)
                    {
                        control.Width = _panel_modelfields.ControlWidth;
                    }

                    tc_control.Controls.Add(control);

                    #region 如果是文本框时,加上输入验证控件
                    if (_panel_modelfields.IsRequireField == "Y")
                    {
                        Label lbl_reqinfo = new Label();
                        lbl_reqinfo.Text      = "&nbsp;&nbsp;*";
                        lbl_reqinfo.ForeColor = System.Drawing.Color.Red;
                        tc_control.Controls.Add(lbl_reqinfo);
                    }

                    if (_panel_modelfields.ControlType == 2 || _panel_modelfields.ControlType == 5)
                    {
                        if (_panel_modelfields.IsRequireField == "Y")
                        {
                            RequiredFieldValidator _requiredfieldvalidator = new RequiredFieldValidator();
                            _requiredfieldvalidator.ControlToValidate = control.ID;
                            _requiredfieldvalidator.Display           = ValidatorDisplay.Dynamic;
                            _requiredfieldvalidator.ErrorMessage      = "必填";
                            _requiredfieldvalidator.ForeColor         = System.Drawing.Color.Red;
                            _requiredfieldvalidator.ValidationGroup   = _validationgroup;

                            tc_control.Controls.Add(_requiredfieldvalidator);
                        }

                        if (_panel_modelfields.RegularExpression != "")
                        {
                            RegularExpressionValidator _regularexpressionvalidator = new RegularExpressionValidator();
                            _regularexpressionvalidator.ControlToValidate    = control.ID;
                            _regularexpressionvalidator.ErrorMessage         = "数据格式不正确";
                            _regularexpressionvalidator.ForeColor            = System.Drawing.Color.Red;
                            _regularexpressionvalidator.ValidationExpression = _panel_modelfields.RegularExpression;
                            _regularexpressionvalidator.ValidationGroup      = ValidationGroup;
                            _regularexpressionvalidator.Display = ValidatorDisplay.Dynamic;
                            tc_control.Controls.Add(_regularexpressionvalidator);
                        }
                        else
                        {
                            if (_modelfieldsmodel.DataType == 1 || _modelfieldsmodel.DataType == 2 || _modelfieldsmodel.DataType == 4)        //非varchar 字符串
                            {
                                CompareValidator _comparevalidator = new CompareValidator();
                                _comparevalidator.ControlToValidate = control.ID;
                                _comparevalidator.Operator          = ValidationCompareOperator.DataTypeCheck;
                                _comparevalidator.Display           = ValidatorDisplay.Dynamic;
                                _comparevalidator.ForeColor         = System.Drawing.Color.Red;
                                _comparevalidator.ValidationGroup   = _validationgroup;

                                if (_modelfieldsmodel.DataType == 1)//int
                                {
                                    _comparevalidator.Type         = ValidationDataType.Integer;
                                    _comparevalidator.ErrorMessage = "应为整数";
                                }
                                if (_modelfieldsmodel.DataType == 2)//decimal
                                {
                                    _comparevalidator.Type         = ValidationDataType.Double;
                                    _comparevalidator.ErrorMessage = "应为数字";
                                }
                                if (_modelfieldsmodel.DataType == 4)//datetime
                                {
                                    _comparevalidator.Type         = ValidationDataType.Date;
                                    _comparevalidator.ErrorMessage = "日期格式不正确";
                                }
                                tc_control.Controls.Add(_comparevalidator);
                            }
                        }
                    }
                    #endregion

                    if (!string.IsNullOrEmpty(_panel_modelfields.Description))
                    {
                        Label lb = new Label();
                        lb.Text = "  " + _panel_modelfields.Description;
                        tc_control.Controls.Add(lb);
                    }

                    tr_panel_detail.Cells.Add(tc_control);
                    #endregion

                    #region 将控件记录到字段控件HashTable中
                    FieldControlInfo fieldcontrolinfo = new FieldControlInfo();

                    fieldcontrolinfo.FieldID        = _modelfieldsmodel.ID;
                    fieldcontrolinfo.FieldName      = _modelfieldsmodel.FieldName;
                    fieldcontrolinfo.ModelName      = _tablemodel.ModelClassName;
                    fieldcontrolinfo.ControlType    = _panel_modelfields.ControlType;
                    fieldcontrolinfo.ControlName    = control.ID;
                    fieldcontrolinfo.DisplayMode    = _panel_modelfields.DisplayMode;
                    fieldcontrolinfo.Panel_Field_ID = _panel_modelfields.ID;
                    _htFieldControlsInfo.Add(fieldcontrolinfo.ControlName, fieldcontrolinfo);
                    #endregion
                }
                #endregion

                tc_panel.Controls.Add(tb_panel_content);
                tr_panel.Cells.Add(tc_panel);
                T_Content.Rows.Add(tr_panel);
            }
            ViewState["FieldControlsInfo"] = _htFieldControlsInfo;
        }
Ejemplo n.º 25
0
        private void CreateSqlString()
        {
            string _sqlstring = "";
            string _selectstr = "SELECT ";
            string _fromstr   = "";
            string _tmpfrom   = "";         //字段如果是关联时,临时生成的from sql

            #region create the select string
            UD_PanelBLL _panelbll = new UD_PanelBLL(PanelCode, true);
            if (_panelbll.Model == null)
            {
                throw new Exception("Panel:" + PanelCode + ",未能找到该Code对应的Panel,Code无效!");
            }

            Dictionary <string, UD_Panel_ModelFields> dicTreeColumnList = new Dictionary <string, UD_Panel_ModelFields>();
            IList <UD_Panel_ModelFields> _panel_modelfieldsmodels       = _panelbll.GetModelFields();
            OrderFields = _panelbll.Model.DefaultSortFields;

            if (_panel_modelfieldsmodels.Count == 0)
            {
                //未定义Panel字段
                ViewState["SqlString"] = "";
                return;
            }

            if (!string.IsNullOrEmpty(_panelbll.Model.Description))
            {
                string[] _array = _panelbll.Model.Description.Split(new char[] { '|' }, StringSplitOptions.None);
                if (_array.Length >= 2)
                {
                    ViewState["DBConnectString"] = _array[1];
                }
            }

            foreach (UD_Panel_ModelFields _panel_modelfields in _panel_modelfieldsmodels)
            {
                UD_ModelFields _modelfield = new UD_ModelFieldsBLL(_panel_modelfields.FieldID, true).Model;
                UD_TableList   _tablemodel = new UD_TableListBLL(_modelfield.TableID, true).Model;


                string _fieldfullname = _tablemodel.ModelClassName + "_" + _modelfield.FieldName;

                #region 判断字段关联类型,决定如果创建SQL
                switch (_modelfield.RelationType)
                {
                case 1:                                      //Relation to dic
                    if (_panel_modelfields.DisplayMode == 1) //Bound the id value of the field
                    {
                        if (_modelfield.Flag == "Y")
                        {
                            _selectstr += _tablemodel.Name + "." + _modelfield.FieldName + " AS " + _fieldfullname + ",";
                        }
                        else    //扩展字段
                        {
                            _selectstr += "[dbo].[UF_Spilt](" + _tablemodel.Name + ".ExtPropertys,'|'," +
                                          _modelfield.Position.ToString() + ") AS " + _fieldfullname + ",";
                        }
                    }
                    else    //Bound the text value of the field
                    {
                        //计算出关联字典表的别名"_vname"
                        string _vname = "V_Dictionary_Data" + "_" + _modelfield.FieldName;
                        if (_modelfield.Flag == "Y")
                        {
                            _selectstr += _vname + ".Name" + " AS " + _fieldfullname + ",";
                            _tmpfrom   += " left join V_Dictionary_Data AS " + _vname + " ON " + _tablemodel.Name + "." + _modelfield.FieldName + "=" + _vname + ".Code AND " + _vname + ".TableName='" + _modelfield.RelationTableName + "' ";
                        }
                        else    //扩展字段
                        {
                            _selectstr += _vname + ".Name" + " AS " + _fieldfullname + ",";
                            _tmpfrom   += " left join V_Dictionary_Data AS " + _vname + " ON [dbo].[UF_Spilt](" + _tablemodel.Name + ".ExtPropertys,'|'," + _modelfield.Position.ToString() + ") =" + _vname + ".Code AND " + _vname + ".TableName='" + _modelfield.RelationTableName + "' ";
                        }
                    }
                    break;

                case 2:    //Relation to model table
                    if (_panel_modelfields.TreeLevel > 0 && new UD_TableListBLL(_modelfield.RelationTableName).Model.TreeFlag == "Y")
                    {
                        #region 字段关联到树形结构表,且要显示上层父结点信息
                        _fieldfullname += _panel_modelfields.TreeLevel.ToString();
                        if (_modelfield.Flag == "Y")
                        {
                            _selectstr += _tablemodel.Name + "." + _modelfield.FieldName + " AS " + _fieldfullname + ",";
                        }
                        else    //扩展字段
                        {
                            _selectstr += "[dbo].[UF_Spilt](" + _tablemodel.Name + ".ExtPropertys,'|'," + _modelfield.Position.ToString() + ") AS " + _fieldfullname + ",";
                        }

                        dicTreeColumnList.Add(_fieldfullname, _panel_modelfields);
                        #endregion

                        #region 注释
                        //if (param.TreeLevel == 100 && param.DisplayMode == 2)
                        //{
                        //    //显示字段路径全称
                        //    if (_modelfield.Flag == "Y")
                        //        _selectstr += "[dbo].[Exuf_TreeTable_GetFullName]('" + _modelfield.RelationTableName + "'," + _tablemodel.Name + "." + _modelfield.FieldName + ",1) AS " + _fieldfullname + ",";
                        //    else//扩展字段
                        //        _selectstr += "[dbo].[Exuf_TreeTable_GetFullName]('" + _modelfield.RelationTableName + "'," + "[dbo].[UF_Spilt](" + _tablemodel.Name + ".ExtPropertys,'|'," + _modelfield.Position.ToString() + "),0) AS " + _fieldfullname + ",";
                        //}
                        //else
                        //{
                        //    _fieldfullname += param.TreeLevel.ToString();
                        //    if (param.DisplayMode == 1)//Bound the id value of the field
                        //    {
                        //        if (_modelfield.Flag == "Y")
                        //            _selectstr += "[dbo].[Exuf_TreeTable_GetSuperIDByLevel]('" + _modelfield.RelationTableName + "'," + _tablemodel.Name + "." + _modelfield.FieldName + "," + param.TreeLevel.ToString() + ") AS " + _fieldfullname + ",";
                        //        else//扩展字段
                        //        {
                        //            _selectstr += "[dbo].[Exuf_TreeTable_GetSuperIDByLevel]('" + _modelfield.RelationTableName + "'," + "[dbo].[UF_Spilt](" + _tablemodel.Name + ".ExtPropertys,'|'," + _modelfield.Position.ToString() + ")," + param.TreeLevel.ToString() + ") AS " + _fieldfullname + ",";
                        //        }
                        //    }
                        //    else//Bound the text value of the field
                        //    {
                        //        if (_modelfield.Flag == "Y")
                        //            _selectstr += "[dbo].[Exuf_TreeTable_GetSuperNameByLevel]('" + _modelfield.RelationTableName + "'," + _tablemodel.Name + "." + _modelfield.FieldName + "," + param.TreeLevel.ToString() + ") AS " + _fieldfullname + ",";
                        //        else//扩展字段
                        //            _selectstr += "[dbo].[Exuf_TreeTable_GetSuperNameByLevel]('" + _modelfield.RelationTableName + "'," + "[dbo].[UF_Spilt](" + _tablemodel.Name + ".ExtPropertys,'|'," + _modelfield.Position.ToString() + ")," + param.TreeLevel.ToString() + ") AS " + _fieldfullname + ",";
                        //    }
                        //}
                        #endregion
                    }
                    else
                    {
                        #region  需关联到树形结构表
                        if (_panel_modelfields.DisplayMode == 1)    //Bound the id value of the field
                        {
                            if (_modelfield.Flag == "Y")
                            {
                                _selectstr += _tablemodel.Name + "." + _modelfield.FieldName + " AS " + _fieldfullname + ",";
                            }
                            else    //扩展字段
                            {
                                _selectstr += "[dbo].[UF_Spilt](" + _tablemodel.Name + ".ExtPropertys,'|'," + _modelfield.Position.ToString() + ") AS " + _fieldfullname + ",";
                            }
                        }
                        else    //Bound the text value of the field
                        {
                            #region 计算出关联表的别名"_vname"
                            string _vname = "";
                            int    pos    = _modelfield.RelationTableName.LastIndexOf('.');
                            if (pos >= 0)
                            {
                                _vname = _modelfield.RelationTableName.Substring(pos + 1) + "_" + _modelfield.FieldName;
                            }
                            else
                            {
                                _vname = _modelfield.RelationTableName + "_" + _modelfield.FieldName;
                            }
                            #endregion

                            if (_modelfield.Flag == "Y")
                            {
                                _selectstr += _vname + "." + _modelfield.RelationTextField + " AS " + _fieldfullname + ",";
                                _tmpfrom   += " left join " + _modelfield.RelationTableName + " AS " + _vname + " ON " + _tablemodel.Name + "." + _modelfield.FieldName + "=" + _vname + "." + _modelfield.RelationValueField;
                            }
                            else    //扩展字段
                            {
                                _selectstr += _vname + "." + _modelfield.RelationTextField + " AS " + _fieldfullname + ",";
                                _tmpfrom   += " left join " + _modelfield.RelationTableName + " AS " + _vname + " ON [dbo].[UF_Spilt](" + _tablemodel.Name + ".ExtPropertys,'|'," + _modelfield.Position.ToString() + ") =" + _vname + "." + _modelfield.RelationValueField;
                            }
                        }
                        #endregion
                    }

                    break;

                default:    //No relation
                    if (_modelfield.Flag == "Y")
                    {
                        _selectstr += _tablemodel.Name + "." + _modelfield.FieldName + " AS " + _fieldfullname + ",";
                    }
                    else
                    {
                        _selectstr += "[dbo].[UF_Spilt](" + _tablemodel.Name + ".ExtPropertys,'|'," + _modelfield.Position.ToString() + ") AS " + _fieldfullname + ",";
                    }
                    break;
                }
                #endregion

                //Add a bound field to the gridview according to the selected field
                BoundField _boundfield = new BoundField();
                _boundfield.HeaderText     = string.IsNullOrEmpty(_panel_modelfields.LabelText) ? _modelfield.DisplayName : _panel_modelfields.LabelText;
                _boundfield.DataField      = _fieldfullname;
                _boundfield.SortExpression = _fieldfullname;

                if (!_panel_modelfields.FormatString.StartsWith("{0:"))
                {
                    _boundfield.DataFormatString = "{0:" + _panel_modelfields.FormatString + "}";
                }
                else
                {
                    _boundfield.DataFormatString = _panel_modelfields.FormatString;
                }
                //_boundfield.Visible = _panel_modelfieldsmodel.Visible == "Y";

                if (_panel_modelfields.Visible == "Y")
                {
                    if (_panel_modelfields.SortID - 1 > Columns.Count)
                    {
                        Columns.Add(_boundfield);
                    }
                    else
                    {
                        Columns.Insert(_panel_modelfields.SortID - 1, _boundfield);
                    }
                }
            }
            _selectstr = _selectstr.Substring(0, _selectstr.Length - 1);
            #endregion

            #region create the from string of sql
            IList <UD_Panel_TableRelation> _panel_tablerelations = _panelbll.GetTableRelations();
            if (_panel_tablerelations.Count == 0)
            {
                IList <UD_Panel_Table> _panel_tables = _panelbll.GetPanelTables();

                if (_panel_tables.Count == 0)
                {
                    throw new Exception("Panel:" + PanelCode + "在定义中未包括包含的表信息!");
                }

                _fromstr = " FROM " + new UD_TableListBLL(_panel_tables[0].TableID, true).Model.Name;
            }
            else
            {
                foreach (UD_Panel_TableRelation _panel_tablerelation in _panel_tablerelations)
                {
                    string         _parenttablename = new UD_TableListBLL(_panel_tablerelation.ParentTableID, true).Model.Name;
                    string         _childtablename  = new UD_TableListBLL(_panel_tablerelation.ChildTableID, true).Model.Name;
                    UD_ModelFields _parentfield     = new UD_ModelFieldsBLL(_panel_tablerelation.ParentFieldID, true).Model;
                    UD_ModelFields _childfield      = new UD_ModelFieldsBLL(_panel_tablerelation.ChildFieldID, true).Model;
                    if (_panel_tablerelation.JoinMode == "")
                    {
                        _panel_tablerelation.JoinMode = "LEFT JOIN";
                    }

                    if (_fromstr == "")
                    {
                        _fromstr = " FROM " + _parenttablename + " ";
                    }

                    if (_parentfield.Flag == "Y" && _childfield.Flag == "Y")
                    {
                        _fromstr += " " + _panel_tablerelation.JoinMode + " " + _childtablename + " ON " + _parenttablename + "." + _parentfield.FieldName + "=" + _childtablename + "." + _childfield.FieldName + " ";
                    }
                    else
                    {
                        _fromstr += " " + _panel_tablerelation.JoinMode + " " + _childtablename + " ON ";

                        if (_parentfield.Flag == "Y")
                        {
                            _fromstr += "CONVERT(VarChar," + _parenttablename + "." + _parentfield.FieldName + ")";
                        }
                        else
                        {
                            _fromstr += "[dbo].[UF_Spilt](" + _parenttablename + ".ExtPropertys,'|'," +
                                        new UD_ModelFieldsBLL(_panel_tablerelation.ParentFieldID, true).Model.Position + ")";
                        }

                        _fromstr += " = ";

                        if (_childfield.Flag == "Y")
                        {
                            _fromstr += "CONVERT(VarChar," + _childtablename + "." + _childfield.FieldName + ")";
                        }
                        else
                        {
                            _fromstr += "[dbo].[UF_Spilt](" + _childtablename + ".ExtPropertys,'|'," +
                                        new UD_ModelFieldsBLL(_panel_tablerelation.ChildFieldID, true).Model.Position + ")";
                        }
                    }
                    if (_panel_tablerelation.RelationCondition != "")
                    {
                        _fromstr += " AND " + _panel_tablerelation.RelationCondition + " ";
                    }
                }
            }

            if (_tmpfrom != "")
            {
                _fromstr += _tmpfrom;
            }

            _sqlstring = _selectstr + _fromstr;
            #endregion

            ViewState["SqlString"]  = _sqlstring;
            ViewState["TreeColumn"] = dicTreeColumnList;
        }
    protected void bt_OK_Click(object sender, EventArgs e)
    {
        Rpt_DataSetFieldsBLL _bll;

        if ((Guid)ViewState["ID"] != Guid.Empty)
            _bll = new Rpt_DataSetFieldsBLL((Guid)ViewState["ID"]);
        else
            _bll = new Rpt_DataSetFieldsBLL();

        _bll.Model.DataSet = (Guid)ViewState["DataSet"];

        _bll.Model.FieldName = tbx_FieldName.Text;
        _bll.Model.DisplayName = tbx_DisplayName.Text;
        _bll.Model.DataType = int.Parse(ddl_DataType.SelectedValue);
        _bll.Model.Description = tbx_Description.Text;

        if (ddl_IsComputeField.SelectedValue == "Y")
        {
            _bll.Model.IsComputeField = "Y";
            _bll.Model.Expression = tbx_Expression.Text.Trim();
            if (_bll.Model.Expression == "")
            {
                tbx_Expression.Focus();
                MessageBox.Show(this, "请正确录入计算列的表达式!");
                return;
            }
        }
        else
        {
            _bll.Model.IsComputeField = "N";
            _bll.Model.Expression = "";
        }

        if (tbx_SortID.Text != "") _bll.Model.ColumnSortID = int.Parse(tbx_SortID.Text);
        _bll.Model.DisplayMode = int.Parse(ddl_DisplayMode.SelectedValue);

        #region 树形字段有指定层次时,重设字段名
        //要与查询条件生成的字段要一致,以便支持多同一树形字段多列显示
        if (tbx_TreeLevel.Enabled)
        {
            UD_ModelFields f = new UD_ModelFieldsBLL(_bll.Model.FieldID).Model;

            if (new UD_TableListBLL(f.RelationTableName).Model.TreeFlag == "Y")
            {

                int level = 0;
                int.TryParse(tbx_TreeLevel.Text, out level);
                _bll.Model.TreeLevel = level;

                UD_TableList t = new UD_TableListBLL(f.TableID).Model;
                if (level > 0)
                    _bll.Model.FieldName = t.ModelClassName + "_" + f.FieldName + level.ToString();
                else
                    _bll.Model.FieldName = t.ModelClassName + "_" + f.FieldName;
            }
        }
        #endregion

        if (Rpt_DataSetFieldsBLL.GetModelList("DataSet='" + _bll.Model.DataSet.ToString() + "' AND FieldName='" +
               _bll.Model.FieldName + "' AND ID <>'" + _bll.Model.ID.ToString() + "'").Count > 0)
        {
            MessageBox.Show(this, "对不起,字段名已重复,请更改字段名称!");
            return;
        }

        if ((Guid)ViewState["ID"] != Guid.Empty)
        {
            _bll.Update();
        }
        else
        {
            _bll.Add();
        }
        new Rpt_DataSetBLL((Guid)ViewState["DataSet"]).ClearCache();

        Response.Redirect("Rpt_DataSetFieldsList.aspx?ID=" + ViewState["DataSet"].ToString());
    }