我正在尝试使用Syncfusion (Blazor)中的Scheduler工具。我正在绑定到实时firebase中的远程数据。
如果我以正确的格式导入数据,如下所示(ID=0),我可以在调度器中看到它&一切工作正常。如果我手动导入另一个作为ID= 2,它将继续正常工作。

调度器接口分配的随机ID -MajbecDwqY04jsocuS2会打乱顺序并使其停止工作。如何确保id号按1递增才能正常工作。
<div class="col-lg-12 control-section">
<div class="schedule-wrapper">
<SfSchedule TValue="ScheduleData.AppointmentData" Width="100%" Height="650px" @bind-SelectedDate="@CurrentDate" Readonly="false">
<ScheduleEventSettings TValue="ScheduleData.AppointmentData">
<SfDataManager Url="https://firebasekey.europe-west1.firebasedatabase.app/scheduler.json" Adaptor="@Syncfusion.Blazor.Adaptors.WebApiAdaptor"></SfDataManager>
</ScheduleEventSettings>
</SfSchedule>
</div>
</div>
public class AppointmentData
{
public int Id { get; set; }
public string Subject { get; set; }
public string Location { get; set; }
public string Description { get; set; }
public DateTime StartTime { get; set; }
public DateTime EndTime { get; set; }
public Nullable<bool> IsAllDay { get; set; }
public string CategoryColor { get; set; }
public string RecurrenceRule { get; set; }
public Nullable<int> RecurrenceID { get; set; }
public Nullable<int> FollowingID { get; set; }
public string RecurrenceException { get; set; }
public string StartTimezone { get; set; }
public string EndTimezone { get; set; }
}发布于 2021-05-28 05:54:39
您可以按id值排序,然后添加最后一个元素,并对其进行递增,以将其用作下一个键。
执行此操作的云函数的示例代码如下:
const lastItemSnap = await firebase
.database()
.ref("scheduler")
.orderByChild("id")
.limitToLast(1)
.once("value");
const lastKey = lastItemSnap.key;
//Increment key and use it for the next element
const newKey = parseInt(lastKey) + 1;
await firebase.database().ref(`scheduler/${newKey}`).set({ test: "your data" });确保按id排序,因为键将按字符串排序。
https://stackoverflow.com/questions/67730262
复制相似问题