public static string SwitchOperation(string _filter, FilterStr item) { switch (item.Operation) { case OperationStr.GreaterThan: _filter += ">"; break; case OperationStr.LessThan: _filter += "<"; break; case OperationStr.GreaterThanOrEqual: _filter += ">="; break; case OperationStr.LessThanOrEqual: _filter += "<="; break; case OperationStr.NotEqual: _filter += "!="; break; case OperationStr.Equal: _filter += "=="; break; case OperationStr.Like: _filter += ".Contains(\""; break; default: _filter += "=="; break; } return(_filter); }
public IActionResult GetTask(int userid, int pageIndex, int pageSize, [FromBody] List <FilterStr> filter, string order, bool isAsc) { if (userid != -1) { if (filter is null) { filter = new List <FilterStr>(); } FilterStr _f = new FilterStr { FieldName = "UserId", Operation = OperationStr.Equal, Value = userid }; filter.Add(_f); } try { string _order = string.Empty; Expression <Func <TaskView, string> > orderby = null; Expression <Func <TaskView, int> > orderbyint = null; Expression <Func <TaskView, bool> > where = null; GetOrder(order, ref _order, ref orderby, ref orderbyint); if (filter != null && filter.Count > 0) { string _filter = string.Empty; foreach (FilterStr item in filter) { _filter += "p." + item.FieldName; _filter = SwitchOper.SwitchOperation(_filter, item); switch (item.Value.GetType().Name.ToString()) { case "String": case "string": if (item.Operation == OperationStr.Like) { _filter += item.Value; _filter += "\")"; } else if (item.Operation == OperationStr.Equal || item.Operation == OperationStr.NotEqual) { _filter += "\""; _filter += item.Value; _filter += "\""; } else { return(Json(new { state = "-1", msg = "条件无效!" })); } break; case "Int32": case "Int64": case "Int": case "Double": if (item.Operation == OperationStr.Like) { return(Json(new { state = "-1", msg = "条件无效!" })); } else { _filter += item.Value; } break; case "DateTime": if (item.Operation == OperationStr.Like) { return(Json(new { state = "-1", msg = "条件无效!" })); } else { _filter += "DateTime.Parse(\""; _filter += item.Value; _filter += "\")"; } break; default: break; } _filter += "&&"; } _filter = _filter.Substring(0, _filter.Length - 2); where = new Interpreter().ParseAsExpression <Func <TaskView, bool> >(_filter, "p"); } if (orderbyint == null) { return(Json(new { table = _repository.Query <TaskView, string>(pageIndex, pageSize, where, orderby, null, isAsc), state = "0", msg = "操作成功!" })); } else { return(Json(new { table = _repository.Query <TaskView, int>(pageIndex, pageSize, where, orderbyint, null, isAsc), state = "0", msg = "操作成功!" })); } } catch (Exception ex) { return(Json(new { state = "-1", msg = "非法操作!" })); } //return Json(new //{ // table = _repository.GetTask(id), // state = "0", // msg = "操作成功!" //}); //return Ok(); }
public MainViewModel() { // タイトルに表示する文字列を指定 var asm = Assembly.GetExecutingAssembly().GetName(); AppName.Value = asm.Name + " - " + asm.Version.Major + "." + asm.Version.Minor; // 表示するリスト(filteredItemsSource)のソースとフィルタの設定 FilteredItemsSource = new CollectionViewSource { Source = MemoList }; FilteredItemsSource.Filter += (s, e) => { var item = e.Item as SelfMemoItem; e.Accepted = CheckFilterStr(FilterStr.Value, item) && CheckCategoryFilter(item); }; // ファイルが有ればロードしてMemoListを更新 if (File.Exists(MemoFileName)) { SelfMemoList.LoadMemoFile(MemoList, MemoFileName); } // MemoListが空なら、ヘルプメッセージ的な項目を追加する if (SelfMemoList.ItemsList.Count == 0) { MemoList.Add(new SelfMemoItem("用語", "正式名称、別名、訳語など", "用語の解説", "カテゴリ")); MemoList.Add(new SelfMemoItem("SelfMemo", "概要", "キーワードと関連情報(訳語、正式名称、説明など)を登録し、ど忘れした時に見返しやすくするアプリです。", "本アプリの説明")); MemoList.Add(new SelfMemoItem("SelfMemo", "検索機能", "検索フォームからキーワード検索ができます。", "本アプリの説明")); MemoList.Add(new SelfMemoItem("SelfMemo", "ショートカット", "グローバルホットキー(デフォルトでAlt+Shift+F2)でいつでもアプリ起動します。", "本アプリの説明")); MemoList.Add(new SelfMemoItem("SelfMemo", "項目追加", "メニューの「登録ダイアログを開く(Ctrl+R)」からキーワードの追加ができます。", "本アプリの説明")); MemoList.Add(new SelfMemoItem("SelfMemo", "項目編集", "編集ビューから登録内容の編集ができます。", "本アプリの説明")); MemoList.Add(new SelfMemoItem("SelfMemo", "カテゴリフィルタ", "「カテゴリ」メニューでカテゴリ毎の表示フィルタリングができます。", "本アプリの説明")); } // Filter文字列が更新されたら、Filterされたアイテムリストを更新 FilterStr.Subscribe(_ => { // 既にタイマーが走ってたら、一旦止める if (FilteredItemsRefreshTimer.IsEnabled) { FilteredItemsRefreshTimer.Stop(); } // タイマー開始 FilteredItemsRefreshTimer.Interval = TimeSpan.FromMilliseconds(300); FilteredItemsRefreshTimer.Tick += (s, e) => { FilteredItems.Refresh(); FilteredItemsRefreshTimer.Stop(); }; FilteredItemsRefreshTimer.Start(); }); // Filter文字列の有無フラグを連動 UseFilterStr = FilterStr.Select(x => !string.IsNullOrWhiteSpace(x)).ToReadOnlyReactivePropertySlim(); // カテゴリ選択ComboBoxが更新されたら、Filterされたアイテムリスト更新 CategoryListSelected.Subscribe(_ => { if (!FilteredItemsRefreshTimer.IsEnabled) { FilteredItemsRefreshTimer.Interval = TimeSpan.FromMilliseconds(300); FilteredItemsRefreshTimer.Tick += (s, e) => { FilteredItems.Refresh(); FilteredItemsRefreshTimer.Stop(); }; FilteredItemsRefreshTimer.Start(); } }); // 選択項目をSelectedItemに入れる処理 FilteredItems.CurrentChanged += (s, e) => { SelectedItem.Value = FilteredItems.CurrentItem as SelfMemoItem; }; // UseCategoryListはカテゴリリストからなんか選択されてたらTrue UseCategoryList = CategoryListSelected.Select(x => !string.IsNullOrEmpty(x)).ToReadOnlyReactivePropertySlim(); // カテゴリリストのON/OFFを切り替えるタイミングでもカテゴリリストの内容更新 UseCategoryList.Subscribe(_ => { SelfMemoList.UpdateCategoryList(); }); // MemoListのコレクションが更新されたらファイルに保存 MemoList.CollectionChanged += (s, e) => { SelfMemoList.SaveMemoFile(MemoList, MemoFileName); }; WindowWidth.Subscribe(_ => { ExpanderWidth.Value = Math.Max(400, WindowWidth.Value / 2); }); }