diff --git a/Example/SaveSystem/Script/ViewSaveSystem.cs b/Example/SaveSystem/Script/ViewSaveSystem.cs index 4fc371d..a1cfdbc 100644 --- a/Example/SaveSystem/Script/ViewSaveSystem.cs +++ b/Example/SaveSystem/Script/ViewSaveSystem.cs @@ -18,8 +18,14 @@ namespace EGFramework.Examples.Test{ DataStudent dataStudent = new DataStudent(null, 18); DataStudent dataStudent2 = new DataStudent("F", 20); List dataStudents = new List(); - dataStudents.Add(dataStudent); - dataStudents.Add(dataStudent2); + for (int stu = 0; stu < 10; stu++) + { + dataStudents.Add(new DataStudent("stu"+stu, 18)); + } + for (int stu = 0; stu < 10; stu++) + { + dataStudents.Add(dataStudent2); + } EGodotTable table = container.CreateNode("Teacher"); table.InitData(dataStudents); diff --git a/addons/EGFramework/Module/GenerateTools/Templete/Godot/UI/EGodotTable.cs b/addons/EGFramework/Module/GenerateTools/Templete/Godot/UI/EGodotTable.cs index 754925a..70f3b40 100644 --- a/addons/EGFramework/Module/GenerateTools/Templete/Godot/UI/EGodotTable.cs +++ b/addons/EGFramework/Module/GenerateTools/Templete/Godot/UI/EGodotTable.cs @@ -4,10 +4,11 @@ using System.Reflection; using System.Security.Cryptography.X509Certificates; using Godot; -namespace EGFramework.UI{ +namespace EGFramework.UI +{ public interface IEGodotTable { - + } public partial class EGodotTable : BoxContainer, IEGFramework, IEGodotTable { @@ -19,12 +20,17 @@ namespace EGFramework.UI{ public IEGSaveData SaveData { set; get; } public Dictionary TitleList { set; get; } = new Dictionary(); - private EGodotTablePageAdapter PageAdapter { set; get; } - private bool IsSearched { set; get; } public Color MainColor { set; get; } = new Color(); public Color MinorColor { set; get; } = new Color(); + private EGodotTablePageAdapter PageAdapter { set; get; } + private bool IsSearched { set; get; } + private EasyEvent OnPageChanged { set; get; } = new EasyEvent(); + private IUnRegister PageChangedRealease { set; get; } + + private List> TableData { set; get; } + /// /// The max data count for one page. /// @@ -75,16 +81,50 @@ namespace EGFramework.UI{ public void InitRowData(List> rowDataList) { - int dataPointer = 0; - foreach (Dictionary row in rowDataList) + RowDataScroll = this.CreateNode("Scroll"); + RowDataScroll.SizeFlagsVertical = SizeFlags.ExpandFill; + + RowDataContainer = RowDataScroll.CreateNode("RowData"); + RowDataContainer.SizeFlagsHorizontal = SizeFlags.ExpandFill; + RowDataContainer.Vertical = true; + + this.TableData = rowDataList; + ToFirstPage(); + // int dataPointer = 0; + // foreach (Dictionary row in rowDataList) + // { + // EGodotTableRowData rowData = RowDataContainer.CreateNode("row" + dataPointer); + // rowData.Init(row); + // rowData.OnModify.Register(data => + // { + // this.EGEditDialog(data, rowData.OnDataEdit, "Modify"); + // }); + // dataPointer++; + // } + InitPageData(); + } + + public void InitPageData() + { + if (PageAdapter.CurrentPage <= 1) { - EGodotTableRowData rowData = this.CreateNode("row" + dataPointer); - rowData.Init(row); - rowData.OnModify.Register(data=> + PageAdapter.CurrentPage = 1; + } + int dataPointer = (PageAdapter.CurrentPage - 1) * PageAdapter.PageLimit; + int dataEndPointer = dataPointer + PageAdapter.PageLimit; + if (dataEndPointer >= PageAdapter.DataLength) + { + dataEndPointer = PageAdapter.DataLength; + } + + for (int dataId = dataPointer; dataId < dataEndPointer; dataId++) + { + EGodotTableRowData rowData = RowDataContainer.CreateNode("row" + dataPointer); + rowData.Init(TableData[dataId]); + rowData.OnModify.Register(data => { - this.EGEditDialog(data,rowData.OnDataEdit,"Modify"); + this.EGEditDialog(data, rowData.OnDataEdit, "Modify"); }); - dataPointer++; } } public void InitPageMenu() @@ -97,25 +137,30 @@ namespace EGFramework.UI{ Label labelCount = PageContainer.CreateNode