public void ApplyFilter() { //where is my target grid? string gridName = this["GridName"].GetValue <string>(); //look into properties to find controls for each field BaseCriteriaCollection bcc = new BaseCriteriaCollection(); string[] ctls = this["FilterValueControls"].GetValue <string[]>(); string[] fields = this["FilterFields"].GetValue <string[]>(); string table = this["TableName"].GetValue <string>(); IProvider provider = DBCore.getInstance(); for (int i = 0; i < ctls.Length; i++) { string ctl = ctls[i]; string field = fields[i]; string value = (string)blockWeb[ctl].ProcessRequest("GetValue"); DBField fieldInfo = provider.GetField(table, field); bcc.AddCriteria(field, new DynamicCriteria(field, fieldInfo.dataType, value, "=")); } blockWeb[gridName].ProcessRequest("RefreshGrid", bcc); WinUI.MessageBox.Show("Filter applied"); }
public void RefreshGrid(BaseCriteriaCollection bcc) //ControlSchema template, BaseCriteriaCollection criteria=null) { string tableName = this["TableName"].GetValue <string>(""); string[] columns = this["Columns"].GetValue <string[]>(null); string[] titles = this["ColumnHeaders"].GetValue <string[]>(null); int i = 0; DataTable dt = new DataTable(); SelectCriteria sc = new SelectCriteria(); sc.fields = new System.Collections.ArrayList(); ctl.Columns.Clear(); foreach (string column in columns) { WinUI.DataGridViewTextBoxColumn col = new WinUI.DataGridViewTextBoxColumn(); col.HeaderText = titles[i++]; col.DataPropertyName = column; col.Name = column; ctl.Columns.Add(col); dt.Columns.Add(column); sc.fields.Add(column); } if (bcc != null) { sc.Criteria = bcc; } //sc.Criteria = criteria; DynamicRowCollection rows = DynamicRow.FindRows(tableName, sc); for (i = 0; i < rows.Count; i++) { DataRow dr = dt.NewRow(); foreach (string column in columns) { dr[column] = rows[i][column].fValue; } dt.Rows.Add(dr); } ctl.DataSource = dt; }