protected void rbl_ValueFrom_SelectedIndexChanged(object sender, EventArgs e) { tbx_searchvalue.Text = ""; tbx_searchvalue.Attributes["onfocus"] = ""; cbl_SearchValue.Items.Clear(); tbx_searchvalue.Visible = false; cbl_SearchValue.Visible = false; MCSSelectControl1.Visible = false; MCSTreeControl1.Visible = false; ddl_Param.Visible = false; if (rbl_ValueFrom.SelectedValue == "M") { #region 条件选择 UD_ModelFields modelfield = new UD_ModelFieldsBLL(new Guid(ddl_Field.SelectedValue), true).Model; if (modelfield == null) { return; } switch (modelfield.RelationType) { case 1: //字典关联 cbl_SearchValue.DataTextField = "Value"; cbl_SearchValue.DataValueField = "Key"; cbl_SearchValue.DataSource = DictionaryBLL.GetDicCollections(modelfield.RelationTableName); cbl_SearchValue.DataBind(); cbl_SearchValue.Visible = true; break; case 2: //实体表关联 if (!string.IsNullOrEmpty(modelfield.SearchPageURL)) { //通过查询控件查询 MCSSelectControl1.PageUrl = modelfield.SearchPageURL; MCSSelectControl1.Visible = true; } else if (new UD_TableListBLL(modelfield.RelationTableName).Model.TreeFlag == "Y") { MCSTreeControl1.DataSource = null; if (modelfield.RelationTableName == "MCS_SYS.dbo.Addr_OrganizeCity") { #region 如果为管理片区字段,则取员工所能管辖的片区 Org_StaffBLL staff = new Org_StaffBLL((int)System.Web.HttpContext.Current.Session["UserID"]); MCSTreeControl1.DataSource = staff.GetStaffOrganizeCity(); if (MCSTreeControl1.DataSource.Select("ID = 1").Length > 0 || staff.Model.OrganizeCity == 0) { MCSTreeControl1.RootValue = "0"; MCSTreeControl1.SelectValue = "0"; } else { MCSTreeControl1.RootValue = new Addr_OrganizeCityBLL(staff.Model.OrganizeCity).Model.SuperID.ToString(); MCSTreeControl1.SelectValue = staff.Model.OrganizeCity.ToString(); } #endregion } else { //通过树形结构查询 MCSTreeControl1.TableName = modelfield.RelationTableName; MCSTreeControl1.RootValue = "0"; MCSTreeControl1.SelectValue = "0"; } MCSTreeControl1.DataBind(); MCSTreeControl1.Visible = true; } else { //其他关联方式的实体表 cbl_SearchValue.DataTextField = "Value"; cbl_SearchValue.DataValueField = "Key"; cbl_SearchValue.DataSource = TreeTableBLL.GetRelationTableSourceData(modelfield.RelationTableName, modelfield.RelationValueField, modelfield.RelationTextField); cbl_SearchValue.DataBind(); cbl_SearchValue.Visible = true; } break; default: //非关联字段 tbx_searchvalue.Visible = true; break; } #endregion } else { ddl_Param.Visible = true; } }
protected void ddl_Field_SelectedIndexChanged(object sender, EventArgs e) { tbx_searchvalue.Text = ""; tbx_searchvalue.Attributes["onfocus"] = ""; cbl_SearchValue.Items.Clear(); ddl_op.Items.Clear(); ddl_TreeLevel.Visible = false; tbx_searchvalue.Visible = false; cbl_SearchValue.Visible = false; MCSSelectControl1.Visible = false; MCSTreeControl1.Visible = false; #region 条件选择 UD_ModelFields modelfield = null; try { modelfield = new UD_ModelFieldsBLL(new Guid(ddl_Field.SelectedValue), true).Model; } catch { } if (modelfield == null) { #region 外部自定义条件 ddl_op.Items.Add(new ListItem("等于", "=")); ddl_op.Items.Add(new ListItem("大于", ">")); ddl_op.Items.Add(new ListItem("大于等于", ">=")); ddl_op.Items.Add(new ListItem("小于", "<")); ddl_op.Items.Add(new ListItem("小于等于", "<=")); ddl_op.Items.Add(new ListItem("不等于", "<>")); tbx_searchvalue.Visible = true; #endregion } else { switch (modelfield.RelationType) { case 1: #region 字典关联 cbl_SearchValue.DataTextField = "Value"; cbl_SearchValue.DataValueField = "Key"; cbl_SearchValue.DataSource = DictionaryBLL.GetDicCollections(modelfield.RelationTableName); cbl_SearchValue.DataBind(); cbl_SearchValue.Visible = true; ddl_op.Items.Insert(0, new ListItem("值", "SELECTITEM")); break; #endregion case 2: #region 实体表关联 if (!string.IsNullOrEmpty(modelfield.SearchPageURL)) { //通过查询控件查询 MCSSelectControl1.PageUrl = modelfield.SearchPageURL; MCSSelectControl1.Visible = true; } else if (new UD_TableListBLL(modelfield.RelationTableName).Model.TreeFlag == "Y") { if (modelfield.RelationTableName == "MCS_SYS.dbo.Addr_OrganizeCity") { #region 如果为管理片区字段,则取员工所能管辖的片区 Org_StaffBLL staff = new Org_StaffBLL((int)System.Web.HttpContext.Current.Session["UserID"]); MCSTreeControl1.DataSource = staff.GetStaffOrganizeCity(); if (MCSTreeControl1.DataSource.Select("ID = 1").Length > 0 || staff.Model.OrganizeCity == 0) { MCSTreeControl1.RootValue = "0"; MCSTreeControl1.SelectValue = "0"; } else { MCSTreeControl1.RootValue = new Addr_OrganizeCityBLL(staff.Model.OrganizeCity).Model.SuperID.ToString(); MCSTreeControl1.SelectValue = staff.Model.OrganizeCity.ToString(); } #endregion } else { //通过树形结构查询 MCSTreeControl1.DataSource = null; MCSTreeControl1.TableName = modelfield.RelationTableName; MCSTreeControl1.RootValue = "0"; MCSTreeControl1.SelectValue = "0"; } MCSTreeControl1.DataBind(); MCSTreeControl1.Visible = true; #region 如果是管理片区或行政城市,可以选择指定的树形级别 if (modelfield.RelationTableName == "MCS_SYS.dbo.Addr_OrganizeCity") { ddl_TreeLevel.Items.Clear(); ddl_TreeLevel.Items.Insert(0, new ListItem("所属于", "100")); ddl_TreeLevel.Items.Insert(1, new ListItem("当前值", "0")); ddl_TreeLevel.Visible = true; } else if (modelfield.RelationTableName == "MCS_SYS.dbo.Addr_OfficialCity") { ddl_TreeLevel.Items.Clear(); ddl_TreeLevel.Items.Insert(0, new ListItem("所属于", "100")); ddl_TreeLevel.Items.Insert(1, new ListItem("当前值", "0")); ddl_TreeLevel.Visible = true; } #endregion } else { //其他关联方式的实体表 cbl_SearchValue.DataTextField = "Value"; cbl_SearchValue.DataValueField = "Key"; cbl_SearchValue.DataSource = TreeTableBLL.GetRelationTableSourceData(modelfield.RelationTableName, modelfield.RelationValueField, modelfield.RelationTextField); cbl_SearchValue.DataBind(); cbl_SearchValue.Visible = true; } ddl_op.Items.Insert(0, new ListItem("值", "SELECTITEM")); break; #endregion default: #region 非关联字段 switch (modelfield.DataType) { case 1: //整型(int) case 2: //小数(decimal) ddl_op.Items.Add(new ListItem("等于", "=")); ddl_op.Items.Add(new ListItem("大于", ">")); ddl_op.Items.Add(new ListItem("大于等于", ">=")); ddl_op.Items.Add(new ListItem("小于", "<")); ddl_op.Items.Add(new ListItem("小于等于", "<=")); ddl_op.Items.Add(new ListItem("不等于", "<>")); break; case 3: //字符串(varchar) case 6: //字符串(nvarchar) case 8: //ntext ddl_op.Items.Add(new ListItem("等于", "=")); ddl_op.Items.Add(new ListItem("相似", "like")); ddl_op.Items.Add(new ListItem("起始于", "StartWith")); ddl_op.Items.Add(new ListItem("不起始于", "NotStartWith")); break; case 4: //日期(datetime) ddl_op.Items.Add(new ListItem("等于", "=")); ddl_op.Items.Add(new ListItem("大于等于", ">=")); ddl_op.Items.Add(new ListItem("小于等于", "<=")); ddl_op.Visible = true; tbx_searchvalue.Attributes["onfocus"] = "setday(this)"; break; case 5: //GUID(uniqueidentifier) case 7: //bit ddl_op.Items.Add(new ListItem("等于", "=")); ddl_op.Items.Add(new ListItem("不等于", "<>")); break; } tbx_searchvalue.Visible = true; break; #endregion } ddl_op.Items.Add(new ListItem("不为空", "NOTNULL")); ddl_op.Items.Add(new ListItem("为空", "ISNULL")); } #endregion ddl_op.SelectedIndex = 0; }