private void CreateWebQueryField(TBlockFieldItem aFieldItem, string Range, bool NewLine) { #if VS90 WebQueryColumnsCollection QueryColumns = new WebQueryColumnsCollection(null, typeof(QueryColumns)); if (string.Compare(aFieldItem.QueryMode, "normal", true) == 0 || string.Compare(aFieldItem.QueryMode, "range", true) == 0) { if (QueryColumns != null) { WebQueryColumns column = new WebQueryColumns(); column.Column = aFieldItem.DataField; column.Caption = string.IsNullOrEmpty(aFieldItem.Description) ? aFieldItem.DataField : aFieldItem.Description; if (string.Compare(aFieldItem.ControlType, "textbox", true) == 0) { column.ColumnType = "ClientQueryTextBoxColumn"; } else if (string.Compare(aFieldItem.ControlType, "combobox", true) == 0) { column.ColumnType = "ClientQueryTextBoxColumn"; } else if (string.Compare(aFieldItem.ControlType, "refvalbox", true) == 0) { column.ColumnType = "ClientQueryTextBoxColumn"; } else if (string.Compare(aFieldItem.ControlType, "datetimebox", true) == 0) { column.ColumnType = "ClientQueryCalendarColumn"; } if (string.Compare(aFieldItem.QueryMode, "normal", true) == 0) { column.Operator = (aFieldItem.DataType == typeof(string)) ? "%" : "="; } else { WebQueryColumns columnrev = new WebQueryColumns(); columnrev.Column = column.Column; columnrev.Caption = column.Caption; columnrev.ColumnType = column.ColumnType; columnrev.Operator = ">="; QueryColumns.Add(columnrev); column.Operator = "<="; } QueryColumns.Add(column); } } WebDevPage.IHTMLElement ClientQuery = (WebDevPage.IHTMLElement)FDesignerDocument.webControls.item("WebClientQuery1", 0); if (ClientQuery != null) { SetCollectionValue(ClientQuery, typeof(WebClientQuery).GetProperty("Columns"), QueryColumns); } #else WebClientQuery WebClientQuery1 = (WebClientQuery)FPage.FindControl("WebClientQuery1"); if (WebClientQuery1 != null) { if (aFieldItem.QueryMode.ToUpper() == "NORMAL" || aFieldItem.QueryMode.ToUpper() == "RANGE") { WebQueryColumns qColumns = new WebQueryColumns(); qColumns.Column = aFieldItem.DataField; qColumns.Caption = aFieldItem.Description; if (qColumns.Caption == "") qColumns.Caption = aFieldItem.DataField; qColumns.Condition = "And"; if (aFieldItem.QueryMode.ToUpper() == "NORMAL") { if (aFieldItem.DataType == typeof(DateTime)) qColumns.Operator = "="; if (aFieldItem.DataType == typeof(int) || aFieldItem.DataType == typeof(float) || aFieldItem.DataType == typeof(double) || aFieldItem.DataType == typeof(Int16)) qColumns.Operator = "="; if (aFieldItem.DataType == typeof(String)) qColumns.Operator = "%"; } qColumns.NewLine = NewLine; if (aFieldItem.QueryMode.ToUpper() == "RANGE") { qColumns.Condition = "And"; if (Range == "") { qColumns.Operator = "<="; qColumns.NewLine = false; CreateWebQueryField(aFieldItem, ">=", true); } else { qColumns.Operator = Range; } } switch (aFieldItem.ControlType.ToUpper()) { case "DATETIMEBOX": qColumns.ColumnType = "ClientQueryCalendarColumn"; break; case "CHECKBOX": qColumns.ColumnType = "ClientQueryCheckBoxColumn"; break; default: qColumns.ColumnType = "ClientQueryTextBoxColumn"; break; } WebClientQuery1.Columns.Add(qColumns); } IComponentChangeService FComponentChangeService = (IComponentChangeService)FDesignerHost.RootComponent.Site.GetService(typeof(IComponentChangeService)); NotifyRefresh(200); FComponentChangeService.OnComponentChanged(WebClientQuery1, null, "", "M"); } #endif }
/// <summary> /// 加入查询 /// </summary> /// <param name="fieldItem">blockfielditem</param> /// <param name="queryFields">Navigator的查询集合</param> /// <param name="queryColumns">ClientQuery的查询集合</param> /// <param name="tableName">tablename</param> private void GenQuery(TBlockFieldItem fieldItem, WebQueryFiledsCollection queryFields, WebQueryColumnsCollection queryColumns , string tableName) { if (string.Compare(fieldItem.QueryMode, "normal", true) == 0 || string.Compare(fieldItem.QueryMode, "range", true) == 0) { if (queryFields != null) { WebQueryField field = new WebQueryField(); field.FieldName = fieldItem.DataField; field.Caption = string.IsNullOrEmpty(fieldItem.Description) ? fieldItem.DataField : fieldItem.Description; if (string.Compare(fieldItem.QueryMode, "normal", true) == 0) { field.Condition = (fieldItem.DataType == typeof(string)) ? "%" : "="; } else { WebQueryField fieldrev = new WebQueryField(); fieldrev.FieldName = field.FieldName; fieldrev.Caption = field.Caption; fieldrev.RefVal = field.RefVal; fieldrev.Condition = ">="; fieldrev.Mode = InitQueryField(fieldItem, fieldrev); queryFields.Add(fieldrev); field.Condition = "<="; } field.Mode = InitQueryField(fieldItem, field); queryFields.Add(field); } if (queryColumns != null) { WebQueryColumns column = new WebQueryColumns(); column.Column = fieldItem.DataField; column.Caption = string.IsNullOrEmpty(fieldItem.Description) ? fieldItem.DataField : fieldItem.Description; if (string.Compare(fieldItem.ControlType, "textbox", true) == 0) { column.ColumnType = "ClientQueryTextBoxColumn"; } else if (string.Compare(fieldItem.ControlType, "combobox", true) == 0) { column.ColumnType = "ClientQueryComboBoxColumn"; column.WebRefVal = string.Format("wrv{0}{1}QF", tableName, fieldItem.DataField); } else if (string.Compare(fieldItem.ControlType, "refvalbox", true) == 0) { if (fieldItem.RefValNo == String.Empty) column.ColumnType = "ClientQueryTextBoxColumn"; else { column.ColumnType = "ClientQueryRefValColumn"; column.WebRefVal = string.Format("wrv{0}{1}QF", tableName, fieldItem.DataField); } } else if (string.Compare(fieldItem.ControlType, "datetimebox", true) == 0) { column.ColumnType = "ClientQueryCalendarColumn"; } if (string.Compare(fieldItem.QueryMode, "normal", true) == 0) { column.Operator = (fieldItem.DataType == typeof(string)) ? "%" : "="; } else { WebQueryColumns columnrev = new WebQueryColumns(); columnrev.Column = column.Column; columnrev.Caption = column.Caption; columnrev.ColumnType = column.ColumnType; columnrev.WebRefVal = column.WebRefVal; columnrev.Operator = ">="; queryColumns.Add(columnrev); column.Operator = "<="; } queryColumns.Add(column); } } }
private void CreateQueryField(TBlockFieldItem aFieldItem, String Range, InfoComboBox aComboBox, String TableName) { if (aFieldItem.QueryMode == null) return; WebNavigator navigator2 = FPage.FindControl("WebNavigator1") as WebNavigator; if (navigator2 != null) { if (aFieldItem.QueryMode.ToUpper() == "NORMAL" || aFieldItem.QueryMode.ToUpper() == "RANGE") { WebQueryField qField = new WebQueryField(); qField.FieldName = aFieldItem.DataField; qField.Caption = aFieldItem.Description; if (qField.Caption == "") qField.Caption = aFieldItem.DataField; if (aFieldItem.QueryMode.ToUpper() == "NORMAL") { if (aFieldItem.DataType == typeof(DateTime)) qField.Condition = "="; if (aFieldItem.DataType == typeof(int) || aFieldItem.DataType == typeof(float) || aFieldItem.DataType == typeof(double) || aFieldItem.DataType == typeof(Int16)) qField.Condition = "="; if (aFieldItem.DataType == typeof(String)) qField.Condition = "%"; } if (aFieldItem.QueryMode.ToUpper() == "RANGE") { if (Range == "") { qField.Condition = "<="; CreateQueryField(aFieldItem, ">=", aComboBox, TableName); } else { qField.Condition = Range; } navigator2.QueryMode = WebNavigator.QueryModeType.ClientQuery; } switch (aFieldItem.ControlType.ToUpper()) { case "TEXTBOX": qField.Mode = "TextBox"; break; case "COMBOBOX": qField.Mode = "ComboBox"; qField.RefVal = "wrv" + TableName + aFieldItem.DataField + "QF"; break; case "REFVALBOX": qField.Mode = "RefVal"; qField.RefVal = "wrv" + TableName + aFieldItem.DataField + "QF"; break; case "DATETIMEBOX": qField.Mode = "Calendar"; break; } navigator2.QueryFields.Add(qField); } IComponentChangeService FComponentChangeService = (IComponentChangeService)FDesignerHost.RootComponent.Site.GetService(typeof(IComponentChangeService)); NotifyRefresh(200); FComponentChangeService.OnComponentChanged(navigator2, null, "", "M"); } WebClientQuery WebClientQuery1 = (WebClientQuery)FPage.FindControl("WebClientQuery1"); if (WebClientQuery1 != null) { if (aFieldItem.QueryMode.ToUpper() == "NORMAL" || aFieldItem.QueryMode.ToUpper() == "RANGE") { WebQueryColumns qColumns = new WebQueryColumns(); qColumns.Column = aFieldItem.DataField; qColumns.Caption = aFieldItem.Description; if (qColumns.Caption == "") qColumns.Caption = aFieldItem.DataField; qColumns.Condition = "And"; if (aFieldItem.QueryMode.ToUpper() == "NORMAL") { if (aFieldItem.DataType == typeof(DateTime)) qColumns.Operator = "="; if (aFieldItem.DataType == typeof(int) || aFieldItem.DataType == typeof(float) || aFieldItem.DataType == typeof(double) || aFieldItem.DataType == typeof(Int16)) qColumns.Operator = "="; if (aFieldItem.DataType == typeof(String)) qColumns.Operator = "%"; } if (aFieldItem.QueryMode.ToUpper() == "RANGE") { qColumns.Condition = "And"; if (Range == "") { qColumns.Operator = "<="; CreateQueryField(aFieldItem, ">=", aComboBox, TableName); } else { qColumns.Operator = Range; } } switch (aFieldItem.ControlType.ToUpper()) { case "TEXTBOX": qColumns.ColumnType = "ClientQueryTextBoxColumn"; break; case "COMBOBOX": qColumns.ColumnType = "ClientQueryComboBoxColumn"; qColumns.WebRefVal = "wrv" + TableName + aFieldItem.DataField + "QF"; break; case "REFVALBOX": qColumns.ColumnType = "ClientQueryRefValColumn"; qColumns.WebRefVal = "wrv" + TableName + aFieldItem.DataField + "QF"; WebDataSource aWebDataSource = new WebDataSource(); InfoCommand aInfoCommand = new InfoCommand(FClientData.DatabaseType); aInfoCommand.Connection = WzdUtils.AllocateConnection(FClientData.DatabaseName, FClientData.DatabaseType, true); //aInfoCommand.Connection = FClientData.Owner.GlobalConnection; IDbDataAdapter DA = DBUtils.CreateDbDataAdapter(aInfoCommand); if (FSYS_REFVAL != null) FSYS_REFVAL.Dispose(); FSYS_REFVAL = new DataSet(); aInfoCommand.CommandText = String.Format("Select * from SYS_REFVAL where REFVAL_NO = '{0}'", aFieldItem.RefValNo); WzdUtils.FillDataAdapter(FClientData.DatabaseType, DA, FSYS_REFVAL, aFieldItem.RefValNo); WebRefVal aWebRefVal = new WebRefVal(); aWebRefVal.ID = qColumns.WebRefVal; aWebRefVal.DataTextField = FSYS_REFVAL.Tables[0].Rows[0]["DISPLAY_MEMBER"].ToString(); aWebRefVal.DataValueField = FSYS_REFVAL.Tables[0].Rows[0]["VALUE_MEMBER"].ToString(); aWebRefVal.DataSourceID = String.Format("wds{0}{1}", TableName, aFieldItem.DataField); aWebRefVal.Visible = false; FWebRefValListPage.Add(aWebRefVal); break; case "DATETIMEBOX": qColumns.ColumnType = "ClientQueryCalendarColumn"; break; case "CHECKBOX": qColumns.ColumnType = "ClientQueryCheckBoxColumn"; break; } WebClientQuery1.Columns.Add(qColumns); } IComponentChangeService FComponentChangeService = (IComponentChangeService)FDesignerHost.RootComponent.Site.GetService(typeof(IComponentChangeService)); NotifyRefresh(200); FComponentChangeService.OnComponentChanged(WebClientQuery1, null, "", "M"); } }
private WebClientQuery CopyQueryFileds(int columncount, bool newpage) { WebClientQuery wcq = new WebClientQuery(); if (newpage) { wcq.ID = this.ID + "QueryTemp"; } else { object objQuery = this.GetObjByID(this.ID + "QueryTempPanel"); if (objQuery != null) { wcq = objQuery as WebClientQuery; return wcq; } wcq.ID = this.ID + "QueryTempPanel"; } if (this.QueryFields.Count > 0) { WebDataSource ds = null; object obj = null; if (this.ViewBindingObject != null && this.ViewBindingObject != "") { obj = this.GetObjByID(this.ViewBindingObject); } else if (this.BindingObject != null && this.BindingObject != "") { obj = this.GetObjByID(this.BindingObject); } if (obj != null) { String strDataSourceID = String.Empty; if (obj is CompositeDataBoundControl) { CompositeDataBoundControl dataControl = (CompositeDataBoundControl)obj; strDataSourceID = dataControl.DataSourceID; } else if (obj.GetType().Name == "ASPxGridView") { strDataSourceID = obj.GetType().GetProperty("DataSourceID").GetValue(obj, null).ToString(); } foreach (Control ctrl in this.Page.Form.Controls) { if (ctrl is WebDataSource && ((WebDataSource)ctrl).ID == strDataSourceID) { ds = (WebDataSource)ctrl; } } } if (ds == null) { throw new Exception("Can't find datasource of binding object"); } wcq.DataSourceID = ds.ID; wcq.GapVertical = 4; int columnindex = 0; int index = 0; string[] arrQueryText = null; if (this.ViewState["QueryTemp"] != null) { string strQueryText = this.ViewState["QueryTemp"].ToString(); arrQueryText = strQueryText.Split(';'); } wcq.KeepCondition = this.QueryKeepConditon; foreach (WebQueryField wqf in this.QueryFields) { WebQueryColumns wqc = new WebQueryColumns(wqf.Name, true, wqf.FieldName, wqf.Caption, 120, "ClientQuery" + wqf.Mode + "Column", "And", wqf.Condition, "Left"); wqc.DefaultValue = wqf.DefaultValue; wqc.IsNvarChar = wqf.IsNvarChar; if (columnindex == columncount) { wqc.NewLine = true; columnindex = 1; } else { wqc.NewLine = false; columnindex++; } if (arrQueryText != null) { wqc.Text = arrQueryText[index]; index++; } if (wqf.Condition == "") { Type tp = ds.InnerDataSet.Tables[ds.DataMember].Columns[wqf.FieldName].DataType; if (tp == typeof(string)) { wqc.Operator = "%"; } else { wqc.Operator = "="; } } if (wqf.Mode == "") { wqc.ColumnType = "ClientQueryTextBoxColumn"; } if (wqf.Mode == "RefVal" || wqf.Mode == "ComboBox") { wqc.WebRefVal = wqf.RefVal; } else if (wqf.Mode == "RefButton") { wqc.WebRefButton = wqf.RefVal; } wcq.Columns.Add(wqc); } } else { throw new Exception("No QueryFields in WebNavigator"); } this.Page.Form.Controls.Add(wcq); //为了使用Wcq的Page属性 return wcq; }