|
725 | 725 | <div class="@LineCellClassString">@GetLineNo(item)</div> |
726 | 726 | </td> |
727 | 727 | } |
728 | | - @{ |
729 | | - var index = 0; |
730 | | - var colIndex = 0; |
731 | | - var isInCell = InCellMode && SelectedRows.FirstOrDefault() == item; |
732 | | - } |
733 | 728 | @if (ShowExtendButtons && IsExtendButtonsInRowHeader) |
734 | 729 | { |
735 | 730 | @RenderRowExtendButtons(item) |
|
741 | 736 | } |
742 | 737 | else |
743 | 738 | { |
744 | | - @foreach (var col in GetVisibleColumns()) |
745 | | - { |
746 | | - if (colIndex > 1) |
747 | | - { |
748 | | - colIndex--; |
749 | | - continue; |
750 | | - } |
751 | | - var cellClass = ""; |
752 | | - var colSpan = 0; |
753 | | - string? value = null; |
754 | | - RenderFragment? valueTemplate = null; |
755 | | - if (col.OnCellRender != null) |
756 | | - { |
757 | | - var cell = new TableCellArgs { Row = item, ColumnName = col.GetFieldName() }; |
758 | | - col.OnCellRender(cell); |
759 | | - cellClass = cell.Class; |
760 | | - colSpan = cell.Colspan; |
761 | | - valueTemplate = cell.ValueTemplate; |
762 | | - value = cell.Value; |
763 | | - colIndex = colSpan; |
764 | | - } |
765 | | - <td colspan="@GetColSpan(colSpan)" class="@GetFixedCellClassString(col, cellClass)" style="@GetFixedCellStyleString(col)"> |
766 | | - @{ |
767 | | - var isFirstColOfTree = IsTree && index++ == 0; |
768 | | - var degree = 0; |
769 | | - var isExpend = false; |
770 | | - var hasChildren = false; |
771 | | - if (isFirstColOfTree) |
772 | | - { |
773 | | - var treeItem = TreeNodeCache.Find(TreeRows, item, out degree); |
774 | | - if(treeItem != null) |
775 | | - { |
776 | | - isExpend = treeItem.IsExpand; |
777 | | - hasChildren = treeItem.HasChildren; |
778 | | - } |
779 | | - } |
780 | | - var hesTreeChildren = isFirstColOfTree && hasChildren; |
781 | | - } |
782 | | - <DynamicElement TagName="div" TriggerClick="@hesTreeChildren" |
783 | | - OnClick="@ToggleTreeRow(item)" StopPropagation="hesTreeChildren" |
784 | | - class="@GetCellClassString(col, hesTreeChildren, isInCell)" style="@GetCellStyleString(col)"> |
785 | | - @if (isFirstColOfTree) |
786 | | - { |
787 | | - <div class="is-node" style="@GetTreeStyleString(degree)"> |
788 | | - @if (hesTreeChildren) |
789 | | - { |
790 | | - <i class="@GetTreeClassString(isExpend)"></i> |
791 | | - } |
792 | | - </div> |
793 | | - } |
794 | | - @if (IsExcel) |
795 | | - { |
796 | | - @RenderExcelCell(col, item, ItemChangedType.Update) |
797 | | - } |
798 | | - else if(isInCell) |
799 | | - { |
800 | | - @RenderCell(col, EditModel, AddInCell ? ItemChangedType.Add : ItemChangedType.Update) |
801 | | - } |
802 | | - else |
803 | | - { |
804 | | - var triggerDoubleClick = OnDoubleClickCellCallback != null; |
805 | | - <DynamicElement TagName="div" TriggerDoubleClick="triggerDoubleClick" GenerateElement="false" |
806 | | - OnDoubleClick="TriggerDoubleClickCell(col, item)" StopPropagation="true" |
807 | | - class="@GetDoubleClickCellClassString(triggerDoubleClick)"> |
808 | | - @if (valueTemplate != null) |
809 | | - { |
810 | | - @valueTemplate |
811 | | - } |
812 | | - else if (value != null) |
813 | | - { |
814 | | - @value |
815 | | - } |
816 | | - else |
817 | | - { |
818 | | - @GetValue(col, item) |
819 | | - } |
820 | | - </DynamicElement> |
821 | | - } |
822 | | - </DynamicElement> |
823 | | - </td> |
824 | | - } |
| 739 | + @RenderContentRow(item); |
825 | 740 | } |
826 | 741 | @if (ShowExtendButtons && !IsExtendButtonsInRowHeader) |
827 | 742 | { |
828 | 743 | @RenderRowExtendButtons(item) |
829 | 744 | } |
830 | 745 | </DynamicElement>; |
831 | 746 |
|
| 747 | + RenderFragment<TableContentCellContext<TItem>> RenderContentCell => context => |
| 748 | + @<td colspan="@GetColSpan(context.Colspan)" class="@GetFixedCellClassString(context.Col, context.CellClass)" style="@GetFixedCellStyleString(context.Col)"> |
| 749 | + <DynamicElement TagName="div" TriggerClick="@context.HasTreeChildren" |
| 750 | + OnClick="@ToggleTreeRow(context.Item)" StopPropagation="context.HasTreeChildren" |
| 751 | + class="@GetCellClassString(context.Col, context.HasTreeChildren, context.IsInCell)" style="@GetCellStyleString(context.Col)"> |
| 752 | + @if (context.IsFirstColOfTree) |
| 753 | + { |
| 754 | + <div class="is-node" style="@GetTreeStyleString(context.Degree)"> |
| 755 | + @if (context.HasTreeChildren) |
| 756 | + { |
| 757 | + <i class="@GetTreeClassString(context.IsExpand)"></i> |
| 758 | + } |
| 759 | + </div> |
| 760 | + } |
| 761 | + @if (IsExcel) |
| 762 | + { |
| 763 | + @RenderExcelCell(context.Col, context.Item, ItemChangedType.Update) |
| 764 | + } |
| 765 | + else if(context.IsInCell) |
| 766 | + { |
| 767 | + @RenderCell(context.Col, EditModel, AddInCell ? ItemChangedType.Add : ItemChangedType.Update) |
| 768 | + } |
| 769 | + else |
| 770 | + { |
| 771 | + var triggerDoubleClick = OnDoubleClickCellCallback != null; |
| 772 | + <DynamicElement TagName="div" TriggerDoubleClick="triggerDoubleClick" GenerateElement="false" |
| 773 | + OnDoubleClick="TriggerDoubleClickCell(context.Col, context.Item)" StopPropagation="true" |
| 774 | + class="@GetDoubleClickCellClassString(triggerDoubleClick)"> |
| 775 | + @if (context.ValueTemplate != null) |
| 776 | + { |
| 777 | + @context.ValueTemplate |
| 778 | + } |
| 779 | + else if (context.Value != null) |
| 780 | + { |
| 781 | + @context.Value |
| 782 | + } |
| 783 | + else |
| 784 | + { |
| 785 | + @GetValue(context.Col, context.Item) |
| 786 | + } |
| 787 | + </DynamicElement> |
| 788 | + } |
| 789 | + </DynamicElement> |
| 790 | + </td>; |
| 791 | + |
832 | 792 | RenderFragment<PlaceholderContext> RenderPlaceholderRow => context => |
833 | 793 | @<tr> |
834 | 794 | @if (IsMultipleSelect) |
|
0 commit comments