예제 #1
0
 /// <summary>
 /// 获取选中单元格中左上角的单元格
 /// </summary>
 private void Get_Select_LeftTop_And_RigthDown_Cell(out CellData leftTop, out CellData rigthDown)
 {
     leftTop   = null;
     rigthDown = null;
     foreach (var item in SelectCells)
     {
         if (leftTop == null)
         {
             leftTop = item.Data;
         }
         else
         {
             if (item.Data.ColumnIndex < leftTop.ColumnIndex || item.Data.RowIndex < leftTop.RowIndex)
             {
                 leftTop = item.Data;
             }
         }
         if (rigthDown == null)
         {
             rigthDown = item.Data;
         }
         else
         {
             if (item.Data.ColumnIndex > rigthDown.ColumnIndex || item.Data.RowIndex > rigthDown.RowIndex)
             {
                 rigthDown = item.Data;
             }
         }
     }
 }
예제 #2
0
        /// <summary>
        /// 添加一个单元格
        /// </summary>
        /// <param name="columnIndex"></param>
        /// <param name="rowIndex"></param>
        /// <param name="content"></param>
        public CellData AddCell(int columnIndex, int rowIndex, string content, float rowHeigth, float columnWidth, int rowMerge, int columnMerge, bool isNull)
        {
            var cell = TableController.CellController.Create <TableCell>();
            var data = CellDatas.FirstOrDefault(p => p.ColumnIndex == columnIndex && p.RowIndex == rowIndex);

            if (data != null)
            {
                data.Content = content;
                return(data);
            }

            data = new CellData(TableController, cell, columnIndex, rowIndex, content, rowHeigth, columnWidth, rowMerge, columnMerge, isNull);
            if (columnIndex < ColumnDatas.Count)
            {
                var column = ColumnDatas[columnIndex];
                data.ColumnWidth = column.Width;
            }
            if (rowIndex < RowDatas.Count)
            {
                var row = RowDatas[rowIndex];
                data.RowHeigth = row.Heigth;
            }
            CellDatas.Add(data);
            return(data);
        }
예제 #3
0
 /// <summary>
 /// 触发合并单元格事件
 /// </summary>
 /// <param name="arg0"></param>
 /// <param name="arg1"></param>
 private void Value_MergeDataEvent(CellData arg0, Vector2 arg1)
 {
     if (MergeEvent != null)
     {
         MergeEvent.Invoke(arg0, arg1);
     }
 }
예제 #4
0
 private bool CellDatas_InsertEvent(int index, CellData value)
 {
     if (cellDatas.Count < 1 && value.RowIndex == RowIndex)
     {//如果是这一行,且子物体没有
         Heigth = value.RowHeigth;
     }
     return(true);
 }
예제 #5
0
 private bool CellDatas_RemoveEvent(int index, CellData value)
 {
     value.RowData.CellDatas.Remove(value);
     value.ColumnData.CellDatas.Remove(value);
     GameObject.Destroy(value.TableCell.gameObject);
     RefreshSize();
     return(true);
 }
예제 #6
0
 private bool CellDatas_InsertEvent(int index, CellData value)
 {
     if (value.RowIndex == 0 && value.ColumnIndex == ColumnIndex)
     {//如果是第一行
         value.ContentChange -= Value_ContentChange;
         value.ContentChange += Value_ContentChange;
         Width = value.ColumnWidth;
     }
     return(true);
 }
예제 #7
0
 private bool CellDatas_ValueChange(int index, CellData origingValue, CellData value)
 {//修改数据的话,直接把之前的删掉,换一个新的
     origingValue.RowData.CellDatas.Remove(origingValue);
     origingValue.ColumnData.CellDatas.Remove(origingValue);
     CellDatas_InsertEvent(index, value);
     if (origingValue == value)
     {
         return(false);                      //一样的数据直接不给修改
     }
     GameObject.Destroy(origingValue.TableCell.gameObject);
     return(true);
 }
예제 #8
0
        /// <summary>
        /// 删除行
        /// </summary>
        /// <param name="cellData"></param>
        public void RemoveRow(CellData cellData)
        {
            int rowIndex = cellData.RowIndex;
            var rows     = Data.CellDatas.Where(p => p.RowIndex == cellData.RowIndex).ToArray();

            foreach (var item in rows)
            {
                Data.CellDatas.Remove(item);
            }
            var cells = Data.CellDatas.Where(p => p.RowIndex > rowIndex);

            foreach (var item in cells)
            {
                item.RowIndex--;
            }
        }
예제 #9
0
        /// <summary>
        /// 删除列
        /// </summary>
        /// <param name="cellData"></param>
        public void RemoveColumn(CellData cellData)
        {
            int columnIndex = cellData.ColumnIndex;
            var columns     = Data.CellDatas.Where(p => p.ColumnIndex == cellData.ColumnIndex).ToArray();

            foreach (var item in columns)
            {
                Data.CellDatas.Remove(item);
            }
            var cells = Data.CellDatas.Where(p => p.ColumnIndex > columnIndex);

            foreach (var item in cells)
            {
                item.ColumnIndex--;
            }
        }
예제 #10
0
        private bool CellDatas_InsertEvent(int index, CellData value)
        {
            value.MergeDataEvent -= Value_MergeDataEvent;
            value.MergeDataEvent += Value_MergeDataEvent;

            #region 处理行
            var row = RowDatas.FirstOrDefault(p => p.RowIndex == value.RowIndex);
            if (row == null)
            {
                var rowButton = TableController.RowController.Create <TableRowButton>();
                row = new RowData(TableController, rowButton, value.RowIndex)
                {
                    RowIndex = value.RowIndex
                };
                value.RowData = row;
                row.Heigth    = value.RowHeigth;
                RowDatas.Add(row);
            }
            row.CellDatas.Add(value);
            value.RowData = row;
            #endregion
            #region 处理列
            var column = ColumnDatas.FirstOrDefault(p => p.ColumnIndex == value.ColumnIndex);
            if (column == null)
            {
                var columnButton = TableController.ColumnController.Create <TableColumnButton>();
                column = new ColumnData(TableController, columnButton, value.ColumnIndex)
                {
                    ColumnIndex = value.ColumnIndex
                };
                value.ColumnData = column;
                column.Width     = value.ColumnWidth;
                ColumnDatas.Add(column);
            }
            column.CellDatas.Add(value);
            value.ColumnData = column;
            #endregion
            RefreshSize();
            value.Refresh();
            return(true);
        }
예제 #11
0
 /// <summary>
 /// 如果列名称发生变化
 /// </summary>
 /// <param name="content"></param>
 /// <returns></returns>
 private bool Value_ContentChange(string content, CellData value)
 {
     ColumnButton.ChangeButtonText(content);
     return(true);
 }