Beispiel #1
0
        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;
        }
Beispiel #2
0
 /// <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);
     }
 }
Beispiel #3
0
        // Отменить поиск. Обработка события нажатия на кнопку.
        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);
        }
Beispiel #4
0
        // Поиск. Обработка события нажатия на кнопку.
        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);
        }
Beispiel #5
0
        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());
        }