public void AssignStartupFilter(FieldFilter[] filter)
 {
     SortedDictionary<string, string> list = CreateFilterExpressions(filter);
     List<string> dataViewFilter = new List<string>();
     foreach (string fieldName in list.Keys)
         dataViewFilter.Add(String.Format("{0}:{1}", fieldName, list[fieldName]));
     Properties["StartupFilter"] = dataViewFilter;
 }
 private SortedDictionary<string, string> CreateFilterExpressions(FieldFilter[] filter)
 {
     // prepare a list of filter expressions
     SortedDictionary<string, string> list = new SortedDictionary<string, string>();
     foreach (FieldFilter ff in filter)
     {
         string filterExpression = null;
         if (!(list.TryGetValue(ff.FieldName, out filterExpression)))
             filterExpression = String.Empty;
         else
             filterExpression = (filterExpression + "\\0");
         if (ff.Value is Array)
         {
             object[] values = ((object[])(ff.Value));
             if (ff.Operation == RowFilterOperation.Between)
                 ff.Value = String.Format("{0}$and${1}", DataControllerBase.ValueToString(values[0]), DataControllerBase.ValueToString(values[1]));
             else
                 if ((ff.Operation == RowFilterOperation.Includes) || (ff.Operation == RowFilterOperation.DoesNotInclude))
                 {
                     StringBuilder svb = new StringBuilder();
                     foreach (object o in values)
                     {
                         if (svb.Length > 0)
                             svb.Append("$or$");
                         svb.Append(DataControllerBase.ValueToString(o));
                     }
                     ff.Value = svb.ToString();
                 }
         }
         else
             ff.Value = DataControllerBase.ValueToString(ff.Value);
         if (ff.Operation == RowFilterOperation.None)
             filterExpression = null;
         else
             filterExpression = (filterExpression
                         + (RowFilterAttribute.ComparisonOperations[Convert.ToInt32(ff.Operation)] + Convert.ToString(ff.Value).Replace("\'", "\\\'")));
         list[ff.FieldName] = filterExpression;
     }
     return list;
 }
 public void AssignFilter(FieldFilter[] filter)
 {
     SortedDictionary<string, string> list = CreateFilterExpressions(filter);
     // create a filter
     StringBuilder sb = new StringBuilder();
     sb.AppendFormat("var dv = Web.DataView.find(\'{0}\');dv.beginFilter();var f;", this.ID);
     foreach (string fieldName in list.Keys)
         if (String.IsNullOrEmpty(list[fieldName]))
             sb.AppendFormat("f=dv.findField(\'{0}\');if(f)dv.removeFromFilter(f);", fieldName);
         else
             sb.AppendFormat("f=dv.findField(\'{0}\');if(f)dv.applyFilter(f,\':\', \'{1}\');", fieldName, list[fieldName]);
     sb.Append("dv.endFilter();");
     ScriptManager.RegisterClientScriptBlock(Page, typeof(DataViewExtender), ("AsyncPostBackScript" + this.ID), sb.ToString(), true);
 }