010-68421378
sales@cogitosoft.com
产品分类
AddFlow  AmCharts JavaScript Stock Chart AmCharts 4: Charts Aspose.Total for Java Altova SchemaAgent Altova DatabaseSpy Altova MobileTogether Altova UModel  Altova MapForce Altova MapForce Server Altova Authentic Aspose.Total for .NET Altova RaptorXML Server ComponentOne Ultimate Chart FX for SharePoint Chart FX CodeCharge Studio ComponentOne Enterprise combit Report Server Combit List & Label 22 Controls for Visual C++ MFC Chart Pro for Visual C ++ MFC DbVisualizer version 12.1 DemoCharge DXperience Subscription .NET DevExpress Universal Subscription Essential Studio for ASP.NET MVC FusionCharts Suite XT FusionCharts for Flex  FusionExport V2.0 GrapeCity TX Text Control .NET for WPF GrapeCity Spread Studio Highcharts Gantt Highcharts 10.0 版 HelpNDoc Infragistics Ultimate  ImageKit9 ActiveX ImageKit.NET JetBrains--Fleet JetBrains-DataSpell JetBrains--DataGrip jQuery EasyUI jChart FX Plus OPC DA .NET Server Toolkit  OSS ASN.1/C Oxygen XML Author  OSS 4G NAS/C, C++ Encoder Decoder Library OSS ASN.1 Tools for C with 4G S1/X2 OSS ASN.1/C# OSS ASN.1/JAVA OSS ASN.1/C++ OPC HDA .NET Server Toolkit OPC DA .Net Client Development Component PowerBuilder redgate NET Developer Bundle Report Control for Visual C++ MFC  Sencha Test SPC Control Chart Tools for .Net Stimulsoft Reports.PHP Stimulsoft Reports.JS Stimulsoft Reports.Java Stimulsoft Reports. Ultimate Stimulsoft Reports.Wpf Stimulsoft Reports.Silverlight SlickEdit Source Insight Software Verify .Net Coverage Validator Toolkit Pro for VisualC++MFC TeeChart .NET Telerik DevCraft Complete Altova XMLSpy Zend Server

TMS--StellarDS SDK for .NET

将我们的网络 .NET SDK 集成到 WPF 数据网格中

上周刚刚推出的 StellarDS SDK for .NET 提供了一种强大且结构化的方式来与基于云的数据进行交互。此 SDK 旨在简化开发和优化 API 交互,它提供强类型、直观的设计和无缝集成 - 让您轻松使用 StellarDS。作为一种快速且可扩展的后端即服务 (BaaS) 解决方案,StellarDS.io 可处理存储、安全性和可扩展性,因此您可以专注于构建出色的应用程序,而无需担心后端复杂性。通过其强大的 REST API,开发人员可以高效地检索和操作数据,同时确保流畅的性能。

演示

由于此演示包含大量源代码,我们不会详细介绍每一行。相反,我们提供了完整的源代码,您可以在此处下载,它是 Github 存储库的一部分。

在这篇博文中,我们将重点介绍应用程序的核心功能——它如何工作以及如何集成 StellarDS .Net SDK。我们将跳过 UI 设计方面和其他细节,将重点放在关键的实施步骤上。

创建我们的应用程序

首先,打开 Visual Studio 并使用 .NET 9 创建一个新的 WPF 应用程序。

创建项目后,我们需要安装所需的依赖项。我们的应用程序与 StellarDS.io 交互并需要某些库。在 Visual Studio 中打开 NuGet 包管理器 并安装以下内容:

1. StellarDS SDK → StellarDs.SDK

2. WebView2 → Microsoft.Web.WebView2

3. 依赖注入 → Microsoft.Extensions.DependencyInjection

这些包将允许我们与 StellarDS API 交互,显示基于 Web 的内容(如果需要),并有效地管理依赖项。

Appsettings

为了保持 API 配置的灵活性,我们将它们存储在 appsettings.json 文件中。这使我们能够轻松更改设置而无需修改代码。

在项目的根目录中创建一个 appsettings.json 文件并添加以下内容:

"StellarDSSettings": {

        "ApiKey": "",

        "ClientId": "",

        "Secret": "",

        "ReturnURL": "http://localhost:3030",

        "AuthCodeURL": "https://stellards.io/oauth"

 

}

ApiUrl 定义了 StellarDS 的基本 URL,ApiKey 用于进行 API 调用时的身份验证。请务必将“your-api-key-here”替换为您的实际密钥。

依赖注入

设置应用程序的第一步是启用依赖注入 (DI)。通过使用 DI,我们可以将 SDK 类注册为服务,使它们在整个应用程序中都易于访问。

为了实现这一点,我们需要重写 App.xaml.cs 中的 OnStartup 方法并对其进行如下修改:

 protected override void OnStartup(StartupEventArgs e)

    {

        var builder = new ConfigurationBuilder()

            .SetBasePath(Directory.GetCurrentDirectory())

            .AddJsonFile("appsettings.json", false, true);

 

        Configuration = builder.Build();

 

        var serviceCollection = new ServiceCollection();

        ConfigureServices(serviceCollection);

        Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

        _serviceProvider = serviceCollection.BuildServiceProvider();

        var mainWindow = _serviceProvider.GetRequiredService();

        mainWindow.Show();

    }

接下来,我们需要定义 ConfigureServices 方法,在该方法中我们在 ServiceCollection 中注册所有必需的服务。这可确保我们的 API 客户端、配置设置和其他依赖项得到正确管理。您可以像这样添加该方法:

 private void ConfigureServices(ServiceCollection serviceCollection)

    {

        serviceCollection.AddTransient();

        var config = new StellarDs.SDK.Client.Configuration();

 

        var oauthConfig = Configuration?.GetSection("StellarDSSettings").Get();

 

        if (oauthConfig == null) return;"

        config.ApiKey.Add("Authorization", oauthConfig.ApiKey);

        config.ApiKeyPrefix.Add("Authorization", "Bearer");      

        var dataApi = new DataApi(config);

        var oauthApi = new OAuthApi( new StellarDs.SDK.Client.Configuration());

           

        serviceCollection.AddSingleton(dataApi);

        serviceCollection.AddSingleton(oauthApi);

        serviceCollection.AddSingleton(oauthConfig);

 

        serviceCollection.AddSingleton();

    }

创建我们的视图

为了显示我们的客户列表,我们将使用 WPF DataGrid。DataGrid 控件提供了一种在 UI 中显示和管理表格数据的简便方法。

打开 MainWindow.xaml 并在 元素内添加以下 DataGrid:

 

                  CanUserDeleteRows="True">

加载并绑定数据

现在我们已经在表单中添加了 DataGrid,下一步是集成必要的服务,以便我们检索和管理客户数据。我们使用依赖注入 (DI) 实现这一点,确保我们的应用程序保持模块化和可维护性。

为此,请修改 MainWindow 的构造函数,如下所示:

public MainWindow(DataApi dataApi, RefreshTimer refreshTimer, OauthConfiguration oauthConfiguration)

    {

        _dataApi = dataApi;

        _refreshTimer = refreshTimer;

        _oauthConfiguration = oauthConfiguration;

 

        InitializeComponent();

    }

这可确保我们的 API 客户端、令牌刷新处理程序和 OAuth 配置在整个应用程序中都可用。

现在我们已经设置了依赖注入,让我们仔细看看如何从 StellarDS API 中检索数据并填充我们的 DataGrid。以下方法 GetData 负责获取客户数据并将其显示在 UI 中。让我们一步一步地分解。

创建获取数据的方法

要从 StellarDS 检索客户记录,我们需要一种向 API 发送请求的异步方法。在 MainWindow.xaml.cs 中,添加以下方法:

private async Task GetData(int take = 0, int offset = 0)

此方法将负责从 StellarDS 检索数据。take 和 offset 这两个参数允许我们控制分页:

· take 指定每个请求要获取多少条记录。

· offset 决定从哪里开始检索数据(加载下一页时很有用)。

通过使此方法异步,我们确保它在后台运行,而不会在等待 API 响应时冻结 UI。

接下来,在 GetData 方法内部,我们调用 StellarDS API 来检索数据:

var result = await _dataApi.GetAsync(_project, Table, offset, take);

以下是具体情况:

· _dataApi 是我们 StellarDS 的 API 客户端实例,通过依赖注入进行注入。

· _project 是我们的 StellarDS 项目 ID,它指定我们正在查询哪个数据集。

· Table 是存储客户记录的数据库表的名称。

· offset 和 take 用于分页,允许我们一次只加载一部分数据,而不是一次检索所有内容。

调用 _dataApi.GetAsync() 后,API 将返回包含以下内容的响应:

· 所请求的数据(客户记录列表)。

· 可用记录的总数。

· 成功状态,表示请求是否成功。

在继续处理数据之前,我们需要验证 API 请求是否成功。在 GetData 中添加以下检查:

if (result is not { IsSuccess: true, Data: not null }) return;

这确保了:

· API 请求成功(IsSuccess:true)。

· 返回的数据不为空(意味着我们确实收到了记录)。

如果请求失败,我们会提前退出该方法以防止出现错误。

StellarDS 返回的数据是 JSON 格式,因此我们需要先将其转换为 C# 对象,然后才能在应用程序中使用它。添加以下内容:

var source = data.Select(d => d.ToObject()).ToList();

这一行:

· 循环遍历数据中的每个 JSON 记录。

· 使用 .ToObject() 将其转换为 Customer 对象。

· 将转换后的记录存储在源中,源是客户对象的列表。

通过将 JSON 转换为强类型对象,我们可以在 C# 代码中更轻松地处理数据。

将数据绑定到 DataGrid

现在我们有了客户对象列表,我们需要在 DataGrid 中显示它们。添加以下行:

DataGrid.ItemsSource = source;

这会将源列表分配给 DataGrid 的 ItemsSource 属性,该属性会自动更新 UI 并显示客户记录。

使用 DataGrid 创建和编辑记录

为了支持 WPF DataGrid 中的内联编辑和记录创建,我们使用 RowEditEnding 事件将更新发送到 StellarDS。由于修改网格内的数据可以递归触发此事件,因此我们首先在处理编辑之前取消订阅:

dataGrid.RowEditEnding -= DataGrid_OnRowEditEnding;

dataGrid.CommitEdit();

然后,我们提取编辑后的记录,确保它是一个有效的客户对象,并在将其发送到 API 之前删除 Id 字段:

if (e.EditAction != DataGridEditAction.Commit){

    dataGrid.RowEditEnding += DataGrid_OnRowEditEnding;

    return;

}

此时,我们确定是否更新现有记录或创建新记录。每次 API 调用之前,我们都会刷新访问令牌以确保身份验证有效。

更新现有记录

如果客户已经有 ID,我们会发送 PUT 请求来更新记录:

if (e.Row.DataContext is not Customer rep){

    dataGrid.RowEditEnding += DataGrid_OnRowEditEnding;

    return;

}

var request = rep.AsDictionary();

request.Remove("Id");

创建新纪录

如果 Id 为空,则表示该记录是新的,因此我们发送 POST 请求来创建它:

else{

    _dataApi.Configuration.ApiKey["Authorization"] = await _refreshTimer.RefreshAccessToken();

    var result = await _dataApi.PostAsync(_project, Table,

        new CreateRecordRequest(new List> { request }));

 

    if (result.IsSuccess) await GetData(10, _offset);

}

最后,我们重新订阅该事件以确保处理未来的编辑:

dataGrid.RowEditEnding += DataGrid_OnRowEditEnding;

为什么要取消订阅并重新订阅?

这可以防止提交编辑时发生递归事件调用,确保每次编辑只发生一次 API 请求。它还可以使 DataGrid 保持响应而不会发生冲突。

删除记录

为了允许用户删除记录,我们首先需要在表单中添加一个删除按钮。打开您的 XAML 文件并在布局中添加以下按钮:

 

处理删除按钮点击

在 ButtonBase_OnClick 事件中,我们从 DataGrid 检索选定的记录,并向 StellarDS 的 API 发送 DELETE 请求。如果成功,我们将刷新数据以更新 UI:

private async void ButtonBase_OnClick(object sender, RoutedEventArgs e){

    var rep = (Customer)DataGrid.SelectedItem;

    await _dataApi.DeleteAsync(Guid.Parse("5f28959b-f6cd-43f1-64eb-08dcc0e23b55"), 288, (int)rep.Id);

    await GetData(10, _offset);

}

这可确保当用户选择一条记录并点击删除时,该记录会从 StellarDS DataGrid 中删除。

此演示展示了如何使用 StellarDS .NET SDK 有效地管理 StellarDS 项目中的表。我们构建了一个 WPF 应用程序,允许用户查看、创建、更新和删除表中的记录,同时集成依赖注入以获得更好的结构和可维护性。UI 使用 WPF DataGrid 构建,提供了一种熟悉且有效的数据交互方式。

到目前为止,我们已经设置了 WPF 项目,集成了 StellarDS SDK,并实现了用于管理记录的核心 CRUD 功能。在第二部分中,我们将通过实现 OAuth2 身份验证进一步实现这一点,允许用户在应用程序内安全地进行身份验证和管理他们的会话。

立即开始

StellarDS C# SDK 现已推出,其中包含示例代码和详细文档,可帮助您快速上手。探索我们的客户管理演示,深入了解 SDK 的功能,并立即开始使用 StellarDS 构建强大的应用程序。

下载 SDK 或查看文档,立即开始使用!

现在就关注我们吧!

 

快速导航

                               

 京ICP备09015132号-996网络文化经营许可证京网文[2017]4225-497号 | 违法和不良信息举报电话:4006561155

                                   © Copyright 2000-2023 北京哲想软件有限公司版权所有 | 地址:北京市海淀区西三环北路50号豪柏大厦C2座11层1105室

                         北京哲想软件集团旗下网站:哲想软件 | 哲想动画

                            华滋生物