Ejemplo n.º 1
0
        internal void OnHeaderClicked(MouseEventArgs e)
        {
            if (!IsSortable)
            {
                return;
            }

            var list  = List;
            var sc    = SortCriteria;
            var curSf = SortField;
            var newSf = new ListSortField()
            {
                PropertyName  = Property.Name,
                SortDirection = ListSortDirection.Ascending
            };

            if (e.CtrlKey && curSf != null)
            {
                sc.Remove(curSf);
            }
            else if (e.CtrlKey && sc != null)
            {
                sc.Add(newSf);
            }
            else if (curSf != null)
            {
                curSf.SortDirection = ListSortDirection.Toggle(curSf.SortDirection);
            }
            else if (list != null)
            {
                list.SortCriteria = new ListSortCriteria()
                {
                    newSf
                }
            }
            ;
            if (list != null)
            {
                list.Sort();
            }
        }

        #endregion
    }
Ejemplo n.º 2
0
 /// <summary>
 /// Constructs a new grid view binding for the given GridView web control.
 /// Sets up grid listeners to handle the data binding.
 /// </summary>
 /// <param name="grid">The GridView control to be bound to the data list object.</param>
 protected GridViewBinding(GridView grid)
     : base(grid)
 {
     grid.RowDataBound += delegate(object sender, GridViewRowEventArgs e)
     {
         if (!(e.Row.DataItem is DataRow dataRow))
         {
             return;
         }
         if (dataRow.Selected)
         {
             e.Row.ApplyStyle(grid.SelectedRowStyle);
         }
         BindToObject(e.Row, dataRow.List, dataRow);
     };
     grid.PageIndexChanging += delegate(object sender, GridViewPageEventArgs e)
     {
         if (e.Cancel)
         {
             return;
         }
         grid.PageIndex = e.NewPageIndex;
         grid.DataBind();
     };
     grid.Sorting += delegate(object s, GridViewSortEventArgs e)
     {
         if (e.Cancel)
         {
             return;
         }
         if (list.SortCriteria != null && list.SortCriteria.Count == 1 &&
             list.SortCriteria[0].PropertyName == e.SortExpression)
         {
             list.SortCriteria[0].SortDirection = ListSortDirection.Toggle(list.SortCriteria[0].SortDirection);
         }
         else
         {
             list.SortCriteria = new ListSortCriteria();
             ListSortField sortFld = new ListSortField();
             sortFld.PropertyName  = e.SortExpression;
             sortFld.SortDirection = e.SortDirection == SortDirection.Ascending ?
                                     ListSortDirection.Ascending : ListSortDirection.Descending;
             list.SortCriteria.Add(sortFld);
         }
         list.Sort();
     };
     grid.RowEditing += delegate(object sender, GridViewEditEventArgs e)
     {
         if (e.Cancel || list == null)
         {
             return;
         }
         grid.EditIndex = e.NewEditIndex;
         int idx = grid.PageSize * grid.PageIndex + e.NewEditIndex;
         list.EditRow = new DataRow(list);
         list.EditRow.CopyFrom(list.GetData()[idx]);
         grid.DataBind();
     };
     grid.RowUpdating += delegate(object sender, GridViewUpdateEventArgs e)
     {
         if (e.Cancel || list == null)
         {
             return;
         }
         int idx = grid.PageSize * grid.PageIndex + e.RowIndex;
         grid.EditIndex = -1;
         list.EditRow   = null;
         grid.DataBind();
     };
     grid.RowCancelingEdit += delegate(object sender, GridViewCancelEditEventArgs e)
     {
         if (e.Cancel || list == null)
         {
             return;
         }
         grid.EditIndex = -1;
         int idx = grid.PageSize * grid.PageIndex + e.RowIndex;
         if (list.EditRow != null)
         {
             list.GetData()[idx].CopyFrom(list.EditRow);
             list.EditRow = null;
             grid.DataBind(); // stop editing existing object
         }
         else
         {
             list.RemoveAt(idx);  // delete new object on cancel
         }
     };
     grid.RowDeleting += delegate(object sender, GridViewDeleteEventArgs e)
     {
         if (e.Cancel)
         {
             return;
         }
         int idx = grid.PageSize * grid.PageIndex + e.RowIndex;
         if (list != null)
         {
             list.RemoveAt(idx);
         }
     };
     grid.RowCommand += delegate(object sender, GridViewCommandEventArgs e)
     {
         if (list == null || e.CommandName != "New")
         {
             return;
         }
         DataRow newRow = new DataRow(list);
         if (int.TryParse("" + e.CommandArgument, out int index))
         {
             index++;
         }
         grid.EditIndex = index;
         list.Insert(grid.PageSize * grid.PageIndex + index, newRow);
     };
     grid.SelectedIndexChanging += delegate(object sender, GridViewSelectEventArgs e)
     {
         if (e.Cancel || list == null)
         {
             return;
         }
         int idx = grid.PageSize * grid.PageIndex + e.NewSelectedIndex;
         list.SelectRow(idx);
         // cancel, since we don't really want the grid to set SelectedIndex, which doesn't work for with paging
         e.Cancel = true;
     };
     // Defer data binding to the Load method after the view state is loaded.
     // Otherwise the view state will get corrupted.
     grid.Load += delegate
     {
         grid.DataBind();
     };
     grid.Unload += delegate
     {
         BindTo(null);
     };
 }
Ejemplo n.º 3
0
 /// <summary>
 /// Constructs a new grid view binding for the given GridView web control.
 /// Sets up grid listeners to handle the data binding.
 /// </summary>
 /// <param name="grid">The GridView control to be bound to the data list object.</param>
 protected GridViewBinding(GridView grid)
     : base(grid)
 {
     grid.RowDataBound += delegate(object sender, GridViewRowEventArgs e)
     {
         DataRow dataRow = e.Row.DataItem as DataRow;
         if (dataRow == null) return;
         dataRow.List.CurrentRow = e.Row.DataItemIndex;
         if (dataRow.Selected) e.Row.ApplyStyle(grid.SelectedRowStyle);
         WebUtil.BindToObject(e.Row, dataRow.List, true);
     };
     grid.PageIndexChanging += delegate(object sender, GridViewPageEventArgs e)
     {
         if (e.Cancel) return;
         grid.PageIndex = e.NewPageIndex;
         grid.DataBind();
     };
     grid.Sorting += delegate(object s, GridViewSortEventArgs e)
     {
         if (e.Cancel) return;
         if (list.SortCriteria != null && list.SortCriteria.Count == 1 &&
             list.SortCriteria[0].PropertyName == e.SortExpression)
         {
             list.SortCriteria[0].SortDirection = ListSortDirection.Toggle(list.SortCriteria[0].SortDirection);
         }
         else
         {
             list.SortCriteria = new ListSortCriteria();
             ListSortField sortFld = new ListSortField();
             sortFld.PropertyName = e.SortExpression;
             sortFld.SortDirection = e.SortDirection == SortDirection.Ascending ?
                 ListSortDirection.Ascending : ListSortDirection.Descending;
             list.SortCriteria.Add(sortFld);
         }
         list.Sort();
     };
     grid.RowEditing += delegate(object sender, GridViewEditEventArgs e)
     {
         if (e.Cancel || list == null) return;
         grid.EditIndex = e.NewEditIndex;
         int idx = grid.PageSize * grid.PageIndex + e.NewEditIndex;
         list.EditRow = new DataRow(list);
         list.EditRow.CopyFrom(list.GetData()[idx]);
         grid.DataBind();
     };
     grid.RowUpdating += delegate(object sender, GridViewUpdateEventArgs e)
     {
         if (e.Cancel || list == null) return;
         int idx = grid.PageSize * grid.PageIndex + e.RowIndex;
         grid.EditIndex = -1;
         list.EditRow = null;
         grid.DataBind();
     };
     grid.RowCancelingEdit += delegate(object sender, GridViewCancelEditEventArgs e)
     {
         if (e.Cancel || list == null) return;
         grid.EditIndex = -1;
         int idx = grid.PageSize * grid.PageIndex + e.RowIndex;
         if (list.EditRow != null)
         {
             list.GetData()[idx].CopyFrom(list.EditRow);
             list.EditRow = null;
             grid.DataBind(); // stop editing existing object
         }
         else list.RemoveAt(idx); // delete new object on cancel
     };
     grid.RowDeleting += delegate(object sender, GridViewDeleteEventArgs e)
     {
         if (e.Cancel) return;
         int idx = grid.PageSize * grid.PageIndex + e.RowIndex;
         if (list != null) list.RemoveAt(idx);
     };
     grid.RowCommand += delegate(object sender, GridViewCommandEventArgs e)
     {
         if (list == null || e.CommandName != "New") return;
         DataRow newRow = new DataRow(list);
         int index = 0;
         if (Int32.TryParse("" + e.CommandArgument, out index)) index++;
         grid.EditIndex = index;
         list.Insert(grid.PageSize * grid.PageIndex + index, newRow);
     };
     grid.SelectedIndexChanging += delegate(object sender, GridViewSelectEventArgs e)
     {
         if (e.Cancel || list == null) return;
         int idx = grid.PageSize * grid.PageIndex + e.NewSelectedIndex;
         if (list.SelectRow(idx)) list.FireCollectionChanged();
         // cancel, since we don't really want the grid to set SelectedIndex, which doesn't work for with paging
         e.Cancel = true;
     };
     // Defer data binding to the Load method after the view state is loaded.
     // Otherwise the view state will get corrupted.
     grid.Load += delegate
     {
         grid.DataBind();
     };
     grid.Unload += delegate
     {
         BindTo(null);
     };
 }