如何使用Ant Design Blazor組件在列表頁彈窗增加修改數據

在winform中首次使用net8做頁面。列表頁想使用Ant Design組件的彈窗組件實現。但第一次在winform項目中使用ant design組件,列表頁面,點擊新增,或者編輯操作實現彈窗頁面,彈窗頁面想使用模板頁razor頁來實現,而不是用modal組件彈窗的時候直接寫各種表單組件組合實現。但由于是第一次使用。彈窗根本實現不了,彈不出來。網上在github上能找出彈窗實現的開源項目,但是寫的太復雜,并不適用我的首次使用。最終為了趕工期。我用razor中內置的NavigationManager類實現了列表頁跳轉到新增頁面。提交成功后再回轉到列表頁。

但心心念念的彈窗實現我并未放棄。趁著星期天研究了幾次。最終實現了這一功能。

在列表頁要實現點擊新增或者編輯,彈窗打開一個編輯頁面。在編輯頁面操作新增或者修改,然后成功后關閉窗口,刷新列表頁,實現父頁面的更新。

這個在父頁面彈窗的時候有2個點需要實現。由于ant design組件的modal實現彈窗,其底部默認是有確認和取消按鈕的。而這里是不需要的。因為新增按鈕點擊后把數據存入數據庫后,只需要自動關閉窗口,并更新列表頁就可以了。

ModalRef? _modalRef;/// <summary>/// 彈出模板編輯頁面/// </summary>/// <returns></returns>private async Task OpenTemplate(int id){var manager = new BridgeAddressManager();BridgeAddress bridgeAddress = new BridgeAddress();if (id != 0){bridgeAddress = manager.GetById(id);}else{bridgeAddress.Id = 0;}var modalConfig = new ModalOptions{Title = id==0?"新增橋地址":"編輯橋地址",Width = 800,DestroyOnClose = true,Footer = null,AfterClose = () =>{Console.WriteLine("AfterClose");InvokeAsync(StateHasChanged);return Task.CompletedTask;} };_modalRef = modalService.CreateModal<BlazorUI.Template.EditBridgeAddress,BridgeAddress>(modalConfig,bridgeAddress);_modalRef.OnOpen = () =>{Console.WriteLine("ModalRef OnOpen");return Task.CompletedTask;};_modalRef.OnClose = () =>{Console.WriteLine("ModalRef OnClose");manager = new BridgeAddressManager();_dataSource = manager.GetList();InvokeAsync(StateHasChanged);return Task.CompletedTask;};}

這里底部去除確認和取消按鈕,只需ModalOptions設置Footer=null就可以。

這個彈窗只需實現兩個事件,其一,打開彈窗。其二,在關閉彈窗事件 OnClose中,數據源要重新讀取,并調用更新方法,刷新列表頁

頁面點擊新增或者編輯按鈕,調用這個方法。

<Button Style="width:100px;height:30px;border:solid 1px #0000ff;top:20px;font-size:15px;" OnClick="()=>OpenTemplate(0)" >新 增</Button>

在子組件彈窗中的razor頁面中關鍵代碼如下:

@inherits FeedbackComponent<BridgeAddress> 
<Form Model="@_model"
LabelCol="new ColLayoutParam { Span = 4 }"
WrapperCol="new ColLayoutParam { Span = 15 }"
OnFinish="OnFinish"
OnFinishFailed="OnFinishFailed"> <FormItem Label="橋址編碼"> <Input @bind-Value="@_model.CodeHex" Placeholder="請輸入橋址編碼" ><Prefix>0X</Prefix><Suffix>16進制</Suffix></Input></FormItem><FormItem Label="備注"><TextArea @bind-Value="@_model.Remark"  /></FormItem><GridRow><GridCol Span="4"></GridCol><GridCol Span="15" Class="right1"><Button Class="btn" HtmlType="submit" >@(_model.Id==0?"新增":"修改")</Button></GridCol><GridCol Span="4"></GridCol></GridRow></Form>

@inherits FeedbackComponent

這句關鍵,他直接把橋地址實例和子組件綁定。實現了頁面中從數據庫讀取的數據,綁定到頁面相關組件中。

還有一個關鍵處。實現的頗為曲折。就是在新增數據存入數據庫后,調用彈窗的關閉事件

await FeedbackRef!.CloseAsync(); // 操作成功,關閉彈窗

FeedbackRef是父頁面中ModalRef實例。但這個modalRef如何從父組件傳遞到子組件,并能夠使用卻不大好實現。在搜索引擎中搜索ant design組件這方面的應用,幾乎沒什么有用信息。用deepseek搜索有兩種實現方法。其一,使用[Parameter]參數,或者使用級聯參數來實現。但用他那個實現的樣例,卻獲取的都是空值,并不能用。

沒辦法,只能進行各種嘗試。最終在我的孜孜不倦的研究下,終于找到了實現方法,其實很簡單。我在modalService的創建彈窗中的反編譯代碼中發現了這個。

void Child無疑就是指子組件了。

builder.AddAttribute(1, "FeedbackRef", modalRef);

modalRef都賦予給了子組件的FeedbackRef屬性。這意味著我只要獲取FeedbackRe對象,就是modalRef對象了。

剛開始我以為要以參數獲取的形式實現

結果編譯運行,卻報錯了,說FeedbackRef必須唯一。我去除這兩行代碼。直接使用

await FeedbackRef!.CloseAsync(); // 操作成功,關閉彈窗

這次編譯運行,直接成功。原來,這個ModalRef在ant Design組件中使用如此簡單,直接可以拿來用。無需任何獲取操作

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/910200.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/910200.shtml
英文地址,請注明出處:http://en.pswp.cn/news/910200.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

嵌入式學習 51單片機01

一、框架 1、CPU&#xff08;Central Processing Unit&#xff0c;中央處理單元&#xff09;?是計算機的核心部件&#xff0c;負責執行計算機指令和處理數據。 2、MCU&#xff08;Microcontroller Unit&#xff0c;微控制單元&#xff09;?是一種將中央處理器、內存、輸入輸出…

C語言之內存對齊

一、為什么要內存對齊 Arm對內存的訪問支持字&#xff08;4byte&#xff09;、半字&#xff08;2byte&#xff09;、字節&#xff08;1byte&#xff09;的直接訪問&#xff0c;但是呢他們是有一定的要求的&#xff1a; 存取字時要求地址按字對齊&#xff0c;也就是地址要是4的…

Python 基礎語法 -----函數

一、函數 1、函數是什么 編程中的函數和數學中的函數有一定的相似之處。 數學上的函數&#xff0c;比如 y sin x&#xff0c;x 取不同的值&#xff0c;y 就會得到不同的結果。 編程中的函數是一段可以被重復使用的代碼片段。 &#xff08;1&#xff09;求數列的和&#x…

Windows/Linux系統 Ollama部署deepseek 大模型

Ollama 是一個開源工具&#xff0c;專門用于在本地計算機上運行和操作大型語言模型&#xff08;LLM&#xff09; 官方下載網站&#xff08;https://ollama.ai/&#xff09; Windows系統安裝方法 建議命令行安裝&#xff08;默認安裝會直接安裝到C盤&#xff09; OllamaSetu…

用Tensorflow進行線性回歸和邏輯回歸(一)

這一章告訴你如何用TensorFlow構建簡單的機器學習系統。第一部分回顧構建機器學習系統的基礎特別是講函數&#xff0c;連續性&#xff0c;可微性。接著我們介紹損失函數&#xff0c;然后討論機器學習歸根于找到復雜的損失函數最小化的點的能力。我們然后講梯度下降&#xff0c;…

java/.net跨平臺UI瀏覽器SDK,瀏覽器控件開發包分析

在 Linux 系統中&#xff0c;雖然沒有完全等同于安卓 WebView 的內置瀏覽器 SDK&#xff0c;但存在多種基于開源瀏覽器引擎的解決方案&#xff0c;支持通過 Java 代碼控制網頁加載和執行 JavaScript。以下是具體實現方案和技術細節&#xff1a; 一、核心技術方案對比 方案名稱…

Taro 狀態管理全面指南:從本地狀態到全局方案

在跨端應用開發中&#xff0c;狀態管理是構建可維護、可擴展應用的核心環節。作為京東凹凸實驗室推出的多端統一開發框架&#xff0c;Taro 支持 React/Vue 等主流前端框架&#xff0c;自然也繼承了豐富的狀態管理生態。本文將全面剖析 Taro 中的各種狀態管理方案&#xff0c;從…

記錄一下jar做成windows服務問題

1、打包好jar 2、把jdk防止到和jar同一目錄下 3、下載winsw-x64.exe 和 sample-minimal.xml https://github.com/winsw/winsw/releases/download/v2.12.0/WinSW-x64.exehttps://github.com/winsw/winsw/releases/download/v2.12.0/WinSW-x64.exe sample-minimal.xmlhttps://…

【Dify 案例】【MCP實戰】【二】【超級助理】

我們創建一個工作流。你是一個超級助理,能夠根據輸入的指令,進行推理和自主調用工具,完成并輸出結果。 注意,需要判斷是否調用高德MCP來獲取對應工具協助你完成任務。 1.開始 2.策略大腦 2.1 AEGNT策略 2.2 工具列表 2.3 指令

Qt Quick 與 QML(二)qml中的頂級窗口

一、前言 在QML中&#xff0c;?頂級窗口不是絕對必需的?&#xff0c;但它在大多數應用場景中扮演著關鍵角色。 需要頂級窗口的典型場景&#xff1a; 1.獨立桌面/移動應用? 必須使用Window或ApplicationWindow作為根元素。 2.多窗口應用 每個獨立窗口都需要一個頂級窗口實例…

華為云Flexus+DeepSeek征文|DeepSeek-V3/R1 免費服務開通全流程與Rest API和OpenAI SDK調用詳解

華為云FlexusDeepSeek征文&#xff5c;DeepSeek-V3/R1 免費服務開通全流程與Rest API和OpenAI SDK調用詳解 前言 本文將詳細介紹DeepSeek-V3/R1 免費服務開通全流程&#xff0c;并且詳細講解通過本地方式Rest API和OpenAI SDK兩種方式調用DeepSeek-V3/R1 前提準備 1、訪問 Mod…

Qt 連接信號使用lambda表達式和槽函數的區別

1. 語法與代碼結構 成員函數 需在類中顯式聲明槽函數&#xff08;public slots: 或 Qt 5 后的任意成員函數&#xff09;&#xff0c;并在連接時指定接收對象。 class Receiver : public QObject {Q_OBJECT public slots:void handleSignal(int value) { /* ... */ } };// 連接…

學習筆記丨AR≠VR:透視沉浸式技術的“虛實象限”法則

AR&#xff08;增強現實&#xff09;和VR&#xff08;虛擬現實&#xff09;是沉浸式技術的兩大分支&#xff0c;核心區別在于虛擬與現實的融合程度。以下是兩者的詳細對比&#xff1a; 對比維度 AR&#xff08;增強現實&#xff09; VR&#xff08;虛擬現實&#xff09; 技術…

本地使用 modelscope 大模型 來進行文本生成視頻(Text-to-Video)

1. ? 創建并激活 Conda 環境&#xff08;Python 3.8&#xff09; conda create -n modelscope python3.8 -yconda activate modelscope 2.? 安裝了 PyTorch&#xff08;CPU 版本&#xff09; 如果你是 CPU-only 用戶&#xff08;沒有 NVIDIA 顯卡 或不想用 GPU&#xff0…

文生視頻(Text-to-Video)

&#x1f552; 生成時間&#xff1a;每張圖大概 10–60 秒&#xff08;取決于設備&#xff09; ? 二、文生視頻&#xff08;Text-to-Video&#xff09; 以下項目中&#xff0c;很多都基于 SD 模型擴展&#xff0c;但視頻生成復雜度高&#xff0c;生成時間一般 超過 30 秒&am…

CLion + STM32環境配置,親測有效(2025.06.19記)

CLion STM32環境配置 遇到的問題描述&#xff1a; > "moniton" command not supported by this target. > You cant do that when your target is exec > 上傳完成&#xff0c;但存在問題 > monitor reset > "monitor" command not …

借助ChatGPT快速開發圖片轉PDF的Python工具

一、開發背景與適用場景 隨著數字文檔處理需求的激增&#xff0c;圖片轉PDF的需求日益廣泛。從學生提交圖像化作業&#xff0c;到教師整合掃描試卷等資料&#xff0c;再到行政人員歸檔證件照片&#xff0c;工作中的方方面面都離不開圖片的處理。如何高效、批量地將多個圖片文件…

SuGAR代碼精簡解讀

目錄 一、全流程訓練腳本 train_full_pipeline.py 二、核心訓練邏輯 train.py 粗優化 (coarse_density_and_dn_consistency.py) 網格提取 (extract_mesh_from_coarse_sugar) 精優化 (refined_training) 兩次優化&#xff08;粗優化和精優化&#xff09;中使用的損失函數及…

大模型安全關鍵技術研究

? 引言 隨著人工智能技術的迅猛發展&#xff0c;大模型已成為推動各行業變革的核心力量。從智能客服、醫療影像識別到金融風險預測&#xff0c;大模型的應用場景不斷拓展&#xff0c;深刻改變著人們的生產生活方式。大模型已經轉變為AI領域的基礎設施&#xff0c;為解決各種…

java面試題04成員變量和局部變量的區別

成員變量(Member Variable)和局部變量(Local Variable)是面向對象編程中兩種作用域和生命周期不同的變量,主要區別體現在以下幾個方面: 1. 聲明位置 成員變量: 聲明在類內部、方法/構造器/代碼塊外部。 例如: public class Person {// 成員變量(實例變量)private Str…