### 檔案開頭會看到這幾種: > 當應用程式啟動時,Blazor 會檢查 AppAssembly 屬性,了解哪個組件需要掃描。且會掃描組件中,具有 RouteAttribute 的元件。Blazor 會使用這些值編譯RouteData 物件,而此物件會指定要求路由到元件的方式。 > @page指示詞中指定RouteAttribute,方法是以字串方式傳遞。此屬性會指定由頁面處理/"元件名稱"路由的要求 > 在 Blazor 中,應用程式中的每個頁面都是一個元件,通常會定義於 .razor 檔案中,且具有一或多個指定的路由。 >Blazor 元件的路由「無法」從其檔案位置加以推斷,這也是我剛開始學習不習慣的其中一個點。 * @page指示詞指定元件應直接處理要求。 * "/" (只有"/"),代表的是「首頁」程式經由登入驗證成功後進入的頁面 * @page "/元件名稱" * @inherits 為了要inherits(繼承)另一個檔案裏面定義的屬性與方法,而@inherits這檔案代表的是基礎類別。 * @using BlazorAppNewProject.Models 意思是大帶約制內容是引入 NuGet 套件的命名空間 * @inject 陳述式來插入不同的服務。 * @layout 指示詞,使用來自其他元件的版面配置 * _Imports.razor 這檔案是用來套用至資料夾中的所有 Blazor 元件 --- ### 被[ ]包住的屬性: [Required]=>該屬性是必填的,即該屬性在資料庫中不能為空。 [Column("部門編號")]=>屬性對應的資料庫表中的欄位名稱 ### NOPI寫法中設定寬度,神秘的256是什麼意思? sheet.SetColumnWidth(0, 5 * 2 * 256); //寬度調整 sheet設定寬度是透過字符個數來確定的,1 個字元的寬度大約等於 256。 這句代表「設定為 5 字元寬,則需要使用 5 * 2 * 256。」 --- ### Radzen元件霧煞煞: ``` <RadzenDataGrid @ref="gridmaster" AllowFiltering="false" AllowPaging="true" AllowSorting="true" Data="@holdmasterList" TItem="HoldMasterView" PageSize="@pageSize" RowSelect=@RowSelect EmptyText="無資料可供顯示!" SelectionMode="DataGridSelectionMode.Single" @bind-Value=@selectedHoldMaster Style="text-align:center;--rz-grid-header-background-color: #6C6C6C;"> ``` * @ref是允許在頁面中通過程式碼訪問和操作組件的屬性和方法 不一定每個RadzenDataGrid都要設置 * AllowFiltering如果是true的話,會有篩選器出現 * AllowSorting取得或設定值,代表是否啟用排序功能 * AllowPaging取得或設定值,代表是否啟用分頁功能。 * SelectionMode 指定gridview控制項可多選(Multiple)或單選(Single) * <RadzenPanelMenuItem>是側邊攔菜單,要展開菜單則「 Expanded=true」 * RadzenDataGrid不設置背景顏色,顯示預設背景顏色如下:  * 在<RadzenDataGrid>中會看到設置**TItem**,這代表是資料列的類型,也會在<RadzenDataGridColumn>設置欄位的元件中看到TItem,用意是用來指定整個資料列的資料型別,RadzenDataGrid會使用到哪個資料表,RadzenDataGridColumn會用到該資料表的哪個資料行名稱。 (這就像WebForm中的DataSource) * Property 屬性則指定了要在該列中顯示的資料屬性=資料表中的資料行。 (這就像WebForm中的BoundField 或 TemplateField) <RadzenStack> 這元件是可以垂直或水平堆疊中的排列元素 ``` <RadzenStack Orientation="Orientation.Vertical" AlignItems="AlignItems.Center"></RadzenStack> ``` Orientation方向:Vertical(垂直)、Horizontal(水平) AlignItems(對其位置):Center(置中)、Start(起始位置)、End(結束位置) ### 設置重整畫面的button: `<RadzenButton Text="Reset" Click="@Reset" />` (注意大小寫) 在@code{}中寫上以下的方法,即可以成功 ``` async Task Reset() { grid.Reset(true); await grid.FirstPage(true); } ``` --- ### InvokeAsync與InvokeVoidAsync 的差別在哪? 兩者都可以調用JavaScript 的函數,不一樣的地方在於後者是回類型是 Task,不返回任何值。 而前者InvokeAsync可以傳回值。 --- ### 程式進入點 元件啟動時叫用的方法=程式進入點: `protected override async Task OnInitializedAsync(){}` =>採用非同步寫法 --- ### 有關Blazor的問題: * 如何抓GridData的第一筆? =>欄位.FirstOrDefault() ``` selectedHoldMaster = new List<HoldMasterView>() { holdmasterList.FirstOrDefault() }; ``` => selectedHoldMaster的值則是第一筆資料。 * 擷取元件內所有標記,但不需要建立另一個標籤的參數預設名稱為何? =>ChildContent 是參數的預設名稱,其傳回型別為 RenderFragment * PackageId 的預設值是哪個專案屬性? =>AssemblyName * ?跟:隔開的用意是什麼呢? 以下這句是什麼意思呢? ``` var pageSize = PageSize > 0 ? PageSize : 10; ``` 利用以下範例解釋可能會清楚些: ``` int a=1;int b=2; a>b?10:15; ``` 若a>b答案則是10,false的話答案是15。 因此意思是:「**PageSize>0的話則顯示PageSize的值,不是的話則是顯示10。**」 => **?代表兩個輸出的值,並且用冒號:隔開。** --- ### EditForm * EditForm 是 Blazor 元件,負責在 Blazor 頁面上發揮 HTML 表單的作用。 * 有各種不同功能的選項可以使用,而無須撰寫複雜的程式碼: EditForm 與 HTML 表單之間的主要差異如下: * 資料繫結:您可以建立物件與 EditForm 的關聯。 EditForm 的作用就像物件檢視,用於資料輸入和顯示用途。 * 驗證:EditForm 提供了豐富又可擴充的驗證功能。 在指定了驗證規則的 EditForm 中,您可以將屬性新增到其中的元素。 EditForm 會自動套用這些規則。 * 表單提交:HTML 表單會在 POST 要求提交後,將其傳送給表單處理常式。此表單處理常式預期會執行提交流程,然後顯示任何結果。 而EditForm會簡化HTML表單複雜的步驟,例如手動請求發送與接收。EditForm當用戶提交表單時,在處理程序時就直接執行提交邏輯。 **有三個事件可以用於回應表單提交:** * OnSubmit:無論驗證的結果如何,只要使用者提交表單,就會引發此事件。 * OnValidSubmit:當使用者提交表單,而且輸入通過驗證時,就會引發此事件。 * OnInvalidSubmit:當使用者提交表單,但輸入驗證失敗時,就會引發此事件。 當EditForm 提交時,若其中有元素驗證失敗,會引發哪個事件? => OnInvalidSubmit EditForm 具有哪些功能? =>資料繫結、驗證。沒有資料清理 EditForm 中使用哪個元件顯示驗證錯誤的摘要? =>ValidationSummary此元件會顯示所提交之表單中,所有驗證訊息的摘要
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up