private void UpdateSource(object newSource) { if (this.sourceView != null) { this.sourceView.CollectionChanging -= this.SourceCollectionChanging; this.sourceView.CollectionChanged -= this.SourceCollectionChanged; } this.sourceView = DataSourceViewFacotry.CreateDataSourceView(newSource ?? Enumerable.Empty <object>()); this.sourceView.CollectionChanging += this.SourceCollectionChanging; this.sourceView.CollectionChanged += this.SourceCollectionChanged; }
/// <summary> /// This function can be called from View to bind <see cref="IDataSourceView{T}"/> with <see cref="DataSource{T}"/> on the ViewModel side. /// </summary> /// <typeparam name="T">T type shared between <see cref="IDataSourceView{T}"/> and <see cref="DataSource{T}"/></typeparam> /// <param name="dataSourceView">Control which can visualize <see cref="DataSource{T}"/>.</param> /// <param name="dataSource">Source of data - some T collection.</param> /// <returns>Value indicating whether you bind successfully.</returns> public bool BindToDataSource <T>(IDataSourceView <T> dataSourceView, DataSource <T> dataSource) { try { dataSourceView.Bind(dataSource); return(true); } catch (Exception e) { this.Log("Exception occur during data source binding: " + e, LogLevel.Error); return(false); } }
// Отменить поиск. Обработка события нажатия на кнопку. private void tbSearchCancel_Click(object sender, EventArgs e) { IDataSourceView students = this.ActiveMdiChild as DataViewForm <IStudent>; IDataSourceView companies = this.ActiveMdiChild as DataViewForm <ICompany>; IDataSourceView form = students ?? companies; if (form == null) { return; } form.SetDataSourceFilter(null); }
// Поиск. Обработка события нажатия на кнопку. private void btnSearch_Click(object sender, EventArgs e) { IDataSourceView students = this.ActiveMdiChild as DataViewForm <IStudent>; IDataSourceView companies = this.ActiveMdiChild as DataViewForm <ICompany>; IDataSourceView form = students ?? companies; if (form == null) { return; } var filter = students == null ? $"([Название] LIKE '%{tbSearch.Text}%')" : BuildStudentSearchString(); form.SetDataSourceFilter(filter); }
private static string[] GetData(string prefixText, int count, bool isKz, bool isCode, IDataSourceView dataSourse, string value) { if (!dataSourse.CheckPermit()) { //todo: log return(null); } var reslut = new List <string>(count); var jss = new JavaScriptSerializer(); if (dataSourse.SupportSelectICodeRow) { var queryable = dataSourse.GetSelectICodeRow(GlobalObject.decodeURIComponent(value)); if (isKz) { queryable = isCode ? queryable.Where(q => q.code.StartsWith(prefixText)).Take(count) : queryable.Where(q => q.nameKz.StartsWith(prefixText)).Take(count); foreach (var row in queryable) { reslut.Add(jss.Serialize(new Pair(isCode ? row.code : row.nameKz, new Pair(isCode ? row.nameKz : row.code, row.id)))); } } else { queryable = isCode ? queryable.Where(q => q.code.StartsWith(prefixText)).Take(count) : queryable.Where(q => q.nameRu.StartsWith(prefixText)).Take(count); foreach (var row in queryable) { reslut.Add(jss.Serialize(new Pair(isCode ? row.code : row.nameRu, new Pair(isCode ? row.nameRu : row.code, row.id)))); } } } else { var queryable = dataSourse.GetSelectIRow(GlobalObject.decodeURIComponent(value)); if (isKz) { queryable = queryable.Where(q => q.nameKz.StartsWith(prefixText)).Take(count); foreach (var row in queryable) { reslut.Add(jss.Serialize(new Pair(row.nameKz, new Pair("", row.id)))); } } else { queryable = queryable.Where(q => q.nameRu.StartsWith(prefixText)).Take(count); foreach (var row in queryable) { reslut.Add(jss.Serialize(new Pair(row.nameRu, new Pair("", row.id)))); } } } return(reslut.ToArray()); }