From d66bda656d64c2a8eb5ae5178769d8e1dc7c8841 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sedat=20=C3=96ZT=C3=9CRK?= <76204082+iamsedatozturk@users.noreply.github.com> Date: Tue, 11 Nov 2025 15:00:52 +0300 Subject: [PATCH] =?UTF-8?q?Card=20formundaki=20Cascading=20s=C3=BCtunlar?= =?UTF-8?q?=C4=B1n=20d=C3=BCzenlemesi?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ui/src/views/form/FormDevExpress.tsx | 45 ++++++++++++++++++++++-- ui/src/views/form/useFormData.tsx | 8 +++-- ui/src/views/form/useLookupDataSource.ts | 7 ++-- 3 files changed, 50 insertions(+), 10 deletions(-) diff --git a/ui/src/views/form/FormDevExpress.tsx b/ui/src/views/form/FormDevExpress.tsx index 716c8c46..f309888f 100644 --- a/ui/src/views/form/FormDevExpress.tsx +++ b/ui/src/views/form/FormDevExpress.tsx @@ -24,20 +24,61 @@ const FormDevExpress = (props: { const { listFormCode, isSubForm, mode, refForm, formData, formItems, setFormData } = props const formDataRef = useRef(formData) + const formItemsRef = useRef(formItems) + useEffect(() => { formDataRef.current = formData }, [formData]) + useEffect(() => { + formItemsRef.current = formItems + }, [formItems]) + + // formItems değiştiğinde (özellikle cascading alanlar için) editörlerin dataSource'larını güncelle + useEffect(() => { + if (!refForm.current?.instance) return + + const allItems = formItems.flatMap((group) => (group.items as SimpleItemWithColData[]) || []) + + allItems.forEach((item) => { + if (item.colData?.lookupDto?.dataSourceType && item.editorOptions?.dataSource) { + try { + const editor = refForm.current?.instance.getEditor(item.dataField!) + if (editor) { + editor.option('dataSource', item.editorOptions.dataSource) + } + } catch (err) { + // Editor henüz oluşmamış olabilir, sessizce devam et + console.debug('Editor update skipped for', item.dataField, err) + } + } + }) + }, [formItems]) + return (