DHTMLX Scheduler技术问题:添加事件无法指定分区,始终默认第一分区
Hey there! Let's figure out why your events keep ending up in the first section instead of the one you specify with MessageRoom. Here are the most common issues to check step by step:
First, make sure your sections view is correctly configured to use MessageRoom as the matching field for sections. For example, if you're using a Units View or Timeline View, the configuration needs to explicitly link the event's MessageRoom property to the section's key:
// Example for Units View var sections = [ { key: "roomA", label: "Message Room A" }, { key: "roomB", label: "Message Room B" }, { key: "roomC", label: "Message Room C" } ]; scheduler.createUnitsView({ name: "units", units: sections, unit_property: "MessageRoom" // This must match your event's field name! });
If unit_property (or y_property for Timeline View) is set to something else (like room_id instead of MessageRoom), the scheduler won't recognize your selected section and default to the first one.
You mentioned adding a "room" option to your custom popup—double-check that this form field is correctly mapped to the MessageRoom property of the event. Here's how that should look:
scheduler.config.lightbox.sections = [ { name: "title", height: 40, map_to: "text", type: "textarea", focus: true }, { name: "room", height: 40, map_to: "MessageRoom", // Critical: links the form field to the event's property type: "select", options: sections.map(room => ({ key: room.key, label: room.label })) }, { name: "time", height: 72, type: "time", map_to: "auto" } ];
If map_to is misspelled or points to a different field (like room instead of MessageRoom), the selected section value won't be saved to the event.
Make sure the key values in your sections array match the data type of the MessageRoom value from your form. For example:
- If your sections use numeric keys (
{ key: 1, label: "Room 1" }), your form should return a number (not a string like"1"). - If sections use string keys (
{ key: "room1", label: "Room 1" }), the form's selected value should also be a string.
Mismatched types will prevent the scheduler from finding the correct section, falling back to the first one.
Add a quick debug hook to confirm if the MessageRoom value is actually being attached to the event when you save it:
scheduler.attachEvent("onEventSave", function(id, event) { console.log("Saved event's MessageRoom value:", event.MessageRoom); return true; });
If the log shows undefined or a value that doesn't match your section keys, go back to checking your lightbox form binding.
Look for any other code that might be modifying the MessageRoom property before the event is saved. For example, hooks like onEventCreated or onBeforeEventSave could be resetting the value:
// Example of code that would cause issues scheduler.attachEvent("onEventCreated", function(event) { // Accidentally overwriting the value event.MessageRoom = "room1"; });
Start with the first two checks—they're the most common culprits! Once you confirm the field mappings are correct, the rest should fall into place.
内容的提问来源于stack exchange,提问作者user2969234

