改善DataGrid的默認分頁使其更友好

WPF DataGrid样式优化实战:从默认控件到精美企业级表格 在WPF桌面应用开发中,DataGrid作为核心数据展示控件,其样式定制与性能优化是提升用户体验的关键环节。通过理解WPF的样式(Style)、模板(Template)和资源(Resource)机制,开发者可以突破默认控件的外观限制,构建兼具美观与功能性的数据表格。从视觉层次设计入手,合理运用色彩体系、排版间距和交互反馈,能够显著提升数据的可读性和操作效率。结合MVVM模式的数据绑定,实现界面与逻辑的清晰分离。针对企业级应用常见的大数据量场景,通过启用虚拟化、优化单元格模板和实现分页加载等技术手段,确保表格 阅读详情

改善DataGrid的默認分頁使其更友好

        DataGrid是.net平台下開發Web應用程序最常用的控件,使用該控件可以幫助您專注與商務邏輯的開發,數據的顯示交給它來處理就好了,隻要簡單的設置一些相關的屬性,一張漂亮的表格就出來了,同時,它提供的模板列更大的提高了它的可編程性,使我們的設計更加靈活,想想都覺得這是一件興奮的事!然而,令人感覺美中不足的是,它的分頁功能實在是不怎麼樣,光禿禿的幾個數字掛在上面,既沒有統計信息又沒有跳頁功能,我想,這樣的用戶體驗太乏味了一點吧!於是我就想能不能改善它的分頁功能呢,使它具備上述功能!恩,現在想法有了,問題剩下如何實現?先讓我們想一下,DataGrid最終在客戶端表現為一個table,也就是說服務器將DataGrid解析為一段以<table>開始</table>結束的html代碼,然後將這段代碼發送到請求頁面的客戶端,請注意這個過程是先解析然後發送,既然過程是這樣的,那問題也就迎刃而解了,我們可以在解析後發送前這段時間為控件增加新的功能啊!接下來的問題是我要如何攔截到這段時間並讓整個過程停住去執行我寫的代碼,別急,先讓我們了解一下DataGrid的組成結構,DataGrid由行集和列集構成,它們分別在服務端表現為DataGrid.Items和DataGrid.Columns,DataGrid分頁區是一個DataGridItem,包含在整個Items集合中,每當DataGrid在創建一個Item時,都會引發一個ItemCreated事件,我們可以通過捕捉該事件來獲取"DataGrid分頁區"對象,並在該對象呈現至它包含的Page對象時,也就是發生PreRender事件時,編寫代碼為其加入新功能,如下所示:

private void dgProducts_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)

{

     if (e.Item.ItemType == ListItemType.Pager)

     {

           // 獲取DataGrid分頁區對象並為其指定PreRender事件的處理函數

           pagerItem = e.Item;

           pagerItem.PreRender += new System.EventHandler(this.pagerItem_PreRender);

     }

}

private void pagerItem_PreRender(object sender, EventArgs e)

{

     // 編寫事件處理代碼實現頁面統計信息以及跳頁功能

     .......

}

由於在執行上述事件時DataGrid已經經過解析生成了html,所以我們也隻能向其中添加html代碼來實現所需的功能。最終生成的新的分頁如下圖所示:

在實現跳頁功能時我使用JavaScript將用戶在文本框中輸入的值保存在一個Html隱藏字段裡,然後在服務端獲取該隱藏字段的值,並將DataGrid指定到該頁,我曾經試過用URL傳參數的方式並指定window.location為新的URL字符串,可是使用window.location會導致Page_Load()執行兩次。從而得不到想要的結果。我也考慮過使用ViewState,可那個文本框和按鈕是動態添加進去的Html標簽,事先沒有在服務端定義,又如何操控它們呢!於是這個念頭也就一閃而過了!到最後也隻有採用"隱藏字段"這種不怎麼高級但確實能解決的方法。以下是點"go"按鈕時執行的JavaScript函數:

function go(ctrl,max)

{

     // 驗証用戶輸入值是否符合要求

     if(ctrl.value >= 1 && ctrl.value <= max.innerText)

     {

           // 將輸入值保存到隱藏字段裡

           document.all.PageNum.value = ctrl.value;

     }

     else

     {

           alert('您輸入的頁碼必須是符合頁面要求的數字,最大值是:'+max.innerText);

           ctrl.value="";

           ctrl.focus();

           return false;

     }

}

全部代碼如下:

.Apsx.cs

using System;

using System.Collections;

using System.ComponentModel;

using System.Data;

using System.Data.SqlClient;

using System.Drawing;

using System.Web;

using System.Web.SessionState;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.HtmlControls;

 

namespace Sky_MsdnDataGrid

{

     /// <summary>

     /// SortDataGrid 的摘要描述。

     /// </summary>

     public class SortDataGrid : System.Web.UI.Page

     {

           protected System.Web.UI.WebControls.DataGrid dgProducts;

           private string connStr;

           private string cmdText;

           private DataGridItem pagerItem;

           protected System.Web.UI.HtmlControls.HtmlInputHidden PageNum;

           private int pagerNum = 1;

           private DataTable productTable;

    

           private void Page_Load(object sender, System.EventArgs e)

           {

                // 頁面加載時判斷隱藏字段中是否有值,如果有值代表用戶使用了跳頁功能,並將DataGrid的當前頁設為用戶指定頁

                if (this.PageNum.Value != string.Empty)

                {

                     this.dgProducts.CurrentPageIndex =  Convert.ToInt32(this.PageNum.Value) - 1;

                     if (ViewState["SortExprName"] != null)

                           this.BindData("select * from Products order by " + ViewState["SortExprName"].ToString() + " asc");

                     else

                           this.BindData("select * from Products");

                     this.PageNum.Value = string.Empty;

                }

                else

                {

                     this.BindData("select * from Products");

                }

           }

          

           // 綁定數據

           private void BindData(string sqlText)

           {

                this.connStr = "server=localhost;database=NorthWind;uid=sa";

                this.cmdText = sqlText;

 

                SqlConnection conn = new SqlConnection();

                SqlCommand cmd = new SqlCommand();

                SqlDataAdapter adapter = new SqlDataAdapter();

                productTable = new DataTable("Products");

 

                conn.ConnectionString = this.connStr;

                cmd.CommandType = CommandType.Text;

                cmd.CommandText = this.cmdText;

                cmd.Connection = conn;

                adapter.SelectCommand = cmd;

 

                adapter.Fill(productTable);

 

                this.dgProducts.DataSource = productTable;

                this.dgProducts.DataBind();

           }

 

           #region Web Form 設計工具產生的程式碼

           override protected void OnInit(EventArgs e)

           {

                //

                // CODEGEN: 此為 ASP.NET Web Form 設計工具所需的呼叫。

                //

                InitializeComponent();

                base.OnInit(e);

           }

          

           /// <summary>

           /// 此為設計工具支援所必須的方法 - 請勿使用程式碼編輯器修改

           /// 這個方法的內容。

           /// </summary>

           private void InitializeComponent()

           {   

                this.dgProducts.ItemCreated += new System.Web.UI.WebControls.DataGridItemEventHandler(this.dgProducts_ItemCreated);

                this.dgProducts.PageIndexChanged += new System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.dgProducts_PageIndexChanged);

                this.dgProducts.SortCommand += new System.Web.UI.WebControls.DataGridSortCommandEventHandler(this.dgProducts_SortCommand);

                this.Load += new System.EventHandler(this.Page_Load);

 

           }

           #endregion

          

           // 實現排序功能

           private void dgProducts_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)

           {

               

                this.dgProducts.CurrentPageIndex = 0;

                ViewState["SortExprName"] = e.SortExpression;

                this.BindData("select * from Products order by "+ e.SortExpression + " asc");

           }

 

           private void dgProducts_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)

           {

                this.dgProducts.CurrentPageIndex = e.NewPageIndex;

                if (ViewState["SortExprName"] != null)

                     this.BindData("select * from Products order by " + ViewState["SortExprName"].ToString() + " asc");

                else

                     this.BindData("select * from Products");

           }

 

           private void dgProducts_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)

           {

                if (e.Item.ItemType == ListItemType.Pager)

                {

                     // 獲取DataGrid分頁區對象並為其指定PreRender事件的處理函數

                     pagerItem = e.Item;

                     pagerItem.PreRender += new System.EventHandler(this.pagerItem_PreRender);

                }

           }

 

           private void pagerItem_PreRender(object sender, EventArgs e)

           {

                if (this.pagerNum == 1)

                {

                     this.pagerNum = this.pagerNum - 1;

                     return;

                }

               

                // currentPageNum-當前頁碼 recordCount-總記錄條數 pageCount-頁數

                string currentPageNum = Convert.ToString(this.dgProducts.CurrentPageIndex + 1);

                string recordCount = this.productTable.Rows.Count.ToString();

                string pageCount = this.dgProducts.PageCount.ToString();

               

                // 創建單元格包含頁面統計信息

                TableCell groupCell = new TableCell();

                groupCell.Text = "<b><font face='標楷體' size=3><font color=OliveDrab>當前第</font><font color=red>" + currentPageNum + "</font><font color=OliveDrab>頁 每頁<font color=red>" + this.dgProducts.PageSize.ToString() + "</font>條 (" +

                     "共</font><font color=red>" + recordCount + "</font><font color=OliveDrab>條,共</font><font color=red><label id='maxPage'>" + pageCount + "</label></font><font color=OliveDrab>頁)</font></font></b>";

               

                // 創建單元格包含跳頁功能

                TableCell operCell = new TableCell();

                operCell.Text = "<input type='text' id='textbox' name='T1' size='4' style='border-style: solid; border-width: 1px; padding-left: 4px; padding-right: 4px; padding-top: 1px; padding-bottom: 1px'>&nbsp" +

                    "<input type='submit' value='go' name='B1' onclick='return go(textbox,maxPage)' style='border-style: solid; border-width: 1px; padding-left: 4px; padding-right: 4px; padding-top: 1px; padding-bottom: 1px'>";

               

                // pagerItem.Cells[0]代表DataGrid默認分頁,將其所跨列設為1

                pagerItem.Cells[0].ColumnSpan = 1;

                groupCell.HorizontalAlign = HorizontalAlign.Left;

                groupCell.ColumnSpan = this.dgProducts.Columns.Count - 2;

                operCell.HorizontalAlign = HorizontalAlign.Right;

                pagerItem.Cells.AddAt(0,groupCell);

                pagerItem.Cells.AddAt(2,operCell);

           }

     }

}

.Aspx

<%@ Page language="c#" Codebehind="SortDataGrid.aspx.cs" AutoEventWireup="false" Inherits="Sky_MsdnDataGrid.SortDataGrid" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >

<HTML>

     <HEAD>

           <title>SortDataGrid</title>

           <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">

           <meta content="C#" name="CODE_LANGUAGE">

           <meta content="JavaScript" name="vs_defaultClientScript">

           <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">

           <script language="javascript">

                function go(ctrl,max)

                {

                     // 驗証用戶輸入值是否符合要求

                     if(ctrl.value >= 1 && ctrl.value <= max.innerText)

                     {

                           // 將輸入值保存到隱藏字段裡

                           document.all.PageNum.value = ctrl.value;

                     }

                     else

                     {

                     alert('您輸入的頁碼必須是符合頁面要求的數字,最大值是:'+max.innerText);

                     ctrl.value="";

                     ctrl.focus();

                          return false;

                     }

                }

           </script>

     </HEAD>

     <body MS_POSITIONING="GridLayout">

           <form id="Form1" method="post" runat="server">

                <asp:DataGrid id="dgProducts" style="Z-INDEX: 101; LEFT: 8px; POSITION: absolute; TOP: 16px" runat="server" Width="100%" AllowSorting="True" AutoGenerateColumns="False" AllowPaging="True">

                     <FooterStyle ForeColor="#4A3C8C" BackColor="#B5C7DE"></FooterStyle>

                     <SelectedItemStyle Font-Bold="True" ForeColor="#F7F7F7" BackColor="#738A9C"></SelectedItemStyle>

                     <AlternatingItemStyle Font-Size="X-Small" BackColor="#CCFFFF"></AlternatingItemStyle>

                     <ItemStyle Font-Size="X-Small" BackColor="White"></ItemStyle>

                     <HeaderStyle Font-Size="X-Small" Font-Bold="True" HorizontalAlign="Center" ForeColor="White" BackColor="#99CCCC"></HeaderStyle>

                     <Columns>

                           <asp:BoundColumn DataField="ProductID" HeaderText="產品編號">

                                <HeaderStyle Width="15%"></HeaderStyle>

                                <ItemStyle HorizontalAlign="Center"></ItemStyle>

                           </asp:BoundColumn>

                           <asp:BoundColumn DataField="SupplierID" HeaderText="供應商編號">

                                <HeaderStyle Width="15%"></HeaderStyle>

                                <ItemStyle HorizontalAlign="Center"></ItemStyle>

                           </asp:BoundColumn>

                           <asp:BoundColumn DataField="ProductName" SortExpression="ProductName" HeaderText="產品名稱">

                                <HeaderStyle HorizontalAlign="Left" Width="30%"></HeaderStyle>

                           </asp:BoundColumn>

                           <asp:BoundColumn DataField="UnitPrice" SortExpression="UnitPrice" HeaderText="產品單價">

                                <HeaderStyle Width="20%"></HeaderStyle>

                                <ItemStyle HorizontalAlign="Center"></ItemStyle>

                           </asp:BoundColumn>

                           <asp:BoundColumn DataField="UnitsInStock" SortExpression="UnitsInStock" HeaderText="供應單價">

                                <HeaderStyle Width="20%"></HeaderStyle>

                                <ItemStyle HorizontalAlign="Center"></ItemStyle>

                           </asp:BoundColumn>

                     </Columns>

                     <PagerStyle Font-Size="X-Small" HorizontalAlign="Center" ForeColor="#4A3C8C" BackColor="LightBlue" Mode="NumericPages"></PagerStyle>

                </asp:DataGrid>

                <INPUT style="Z-INDEX: 102; LEFT: 8px; POSITION: absolute; TOP: 256px" id="PageNum" runat="server" type="hidden">

           </form>

     </body>

</HTML>

最終運行效果:

DataGrid组件的自定义Header功能实现 DataGrid 是现代前端开发中常用的组件之一,它主要用于展示和管理表格数据。在企业级应用和数据分析中,DataGrid 担任着展示信息、实现交互和优化用户体验的关键角色。DataGrid 的作用不仅仅是展示数据,更在于提供强大的数据处理能力,如排序、筛选、分页等,使用户能够更加高效地处理大量信息。DataGrid 组件通常具备以下核心功能:数据展示:以表格形式展示数据,支持动态更新。交互操作:用户可以进行排序、筛选、编辑和删除操作。自定义列。 阅读详情

相关推荐

李沐之数值稳定性+模型初始化和激活函数

层记为t,这里的y不是预测,还包括了损失函数,y是优化函数,不是预测的结果y。第t层是输出。所有的h都是一些向量,向量关于向量的导数是一个矩阵,所以用了很多次的矩阵乘法,出问题就在这里。

m0_51133942的博客 1527

EasyUI Pagination 分页的两种做法

EasyUI 的 datagrid 支持服务器端分页,但是官方的资料比较少,以下总结了两种 datagrid 的服务器端分页机制,可根据情况具体使用。 一:使用 datagrid 默认机制 后台: public JsonResult GetQuestionUnit() {     // easyui datagrid 自身会通过 post 的形式传递 rows and page ...

weixin_33832340的博客 187

Unable to negotiate with XXXX port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss

打开ssh_config此文件,滑动到最下面,新增自己git主机地址(这里我直接默认*)执行命令 git clone git@xxxxxxxxxxxxx.git。代码仓库已经添加了ssh公钥之后,克隆代码到本地时就报了这个问题。首先是找到git安装目录(根据自己安装时选项,找到这个目录)再进入ssh目录,找到 ssh_config 配置文件。配置完成后,保存配置文件后再次去clone代码。直接复制下面这一段到文件中最底部位置即可。然后进入 etc目录,找到ssh目录。终于可以克隆下来了。

萌兔兔MMQ!! 3358

EasyUI中DataGrid默认分页的问题

发现在table上直接写data-options后导致数据加载两遍,后来放到了$();中只加载一遍。 另外默认分页PageSzie的设置。 1 $(function () { 2 //加载完后给星星加Tip 3 $("#dg").datagrid({ 4 rownumbers:true, 5 url...

a1911038864的博客 785

如何用YOLOv5改进无人机小目标检测?MFFSODNet实战教程(附代码)

本文详细介绍了如何利用YOLOv5框架结合MFFSODNet网络结构优化无人机航拍图像中的小目标检测。通过引入微小目标预测头、多尺度特征提取模块(MSFEM)和双向密集特征金字塔网络(BDFPN)等核心技术,显著提升了小目标检测精度。文章提供了完整的代码实现方案,并展示了在农业监测、电力巡检等实际场景中的应用效果。

sre5engineer的博客 739

DeiT详解:知识蒸馏的Transformer

DeiT模型(8600万参数)仅用一台 GPU 服务器在 53 hours train,20 hours finetune,仅使用 ImageNet 就达到了 84.2 top-1 准确性,而无需使用任何外部数据进行训练,性能与最先进的卷积神经网络(CNN)可以抗衡。其核心是提出了针对 ViT 的教师-学生蒸馏训练策略,并提出了方法,使得在视觉领域训练得又快又好。

走在深度学习前沿的小宋 2637

datagrid初始化表格时不加载数据及分页设置无效的原因

页面在初始化加载数据较多时会非常耗时,如果只加载表格,用户再根据自己的需要通过条件查询数据,就会节约一些时间,提高用户体验,所以在初始化datagrid时想只加载表格不加载数据,做到数据与表格加载分离的效果。 经过实验发现,使用.datagrid()方法时,参数中只要有URL存在,都会自动调用一次加载数据,可设置url参数为null,则加载表格时就不会向后台发出请求;但是此时如果用户想重置页面条

chengsi101的博客 5639

37、免驱动USB双目同步测距3D活体深度检测和RV1126结合V4L开发USB摄像头使用

基本思想:需要使用双目摄像头在rv1126上进行活体检测,然后将画面实时返回到桌面上,记录一下。第二步:刷机rv1126开发板系统和ssh远程连接,见参考目录。第一步:购买可见光的红外摄像头,见参考连接,在PC端测试可用。

sxj731533730 2621

jeasyui插件扩展datagrid-filter的改善

datagrid-filter在easyui 1.4.5版本下会出现错位的情况: 解决办法很简单: datagrid-filter.js中找到resizeFilter函数,this.filter.resize(this, col.width - btn._outerWidth());改为this.filter.resize(this, col.width - btn._outerWid

qq-3481813050的博客 962

利用Python实现Springer文献关键词爬虫

🔧 如何分析Springer的搜索结果HTML结构🕷️ 编写高性能异步爬虫抓取论文元数据📊 使用Pandas导出Excel🧠 如何处理作者、摘要、DOI等字段🔄 如何优化爬虫稳定性与可扩展性。

2201_76125261的博客 415

刷机维修进阶教程-----oppo机型 一加 7pro 修复基带 更改参数 实例详细步骤解析

通过课程基本可以了解 1-----oppo机型与一加7机型更改参数的具体步骤解析 2------了解oppo机型开启diag端口的具体步骤 3-----了解一加7这些机型改参数常识 。可以借鉴参考用于其他机型 4-----了解手机基带分区与基带辅助分区的作用 5-----机型参数能读取到 但不能写这种情况如何操作

小马哥的专栏 1478

easyui datagrid 搜索按钮 搜索后进入表格

datagrid在进行分页时候,出现了点击搜索按钮,按钮进入了表格中,可能是easyui的一个机制导致的,所以,应该使用一个添加工具栏的方式来解决。 &lt;table id="searchdetail"&gt; &lt;div id="tb"&gt; &lt;div style="font-size:10px;width: 100%;"&gt; ..

qq_21240787的博客 465

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

easyui datagrid 加载慢的问题

easyui datagrid 加载慢的问题

ranshouxu的专栏 4400

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

ASP.NET中的DataGrid的属性

<!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--><script type="text/javascript"

zgqtxwd的专栏 444

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

DataGrid连接Access的快速分页法(2)——SQL语句的选用(升序)

 DataGrid连接Access的快速分页法(2)——SQL语句的选用(升序)一、相关概念     在 ACCESS 数据库中,一个表的主键(PRIMARY KEY,又称主索引)上必然建立了唯一索引(UNIQUE INDEX),因此主键字段的值是不会重复的。并且索引页依据索引列的值进行排序,每个索引记录包含一个指向它所引用的数据行的指针。我们可以利用主键这两个特点来实现对某条记录的定位,从而快速

嗨!您好!Welcome my blog 656

简单的分页控件SimplePager,支持datagrid,datalist,repeater

除了第一个乱七八糟的可输入可选择的DropDownList外,这算第二个控件吧,有空改善一下使用方法1、设置分页控件绑定字符串BindControlString的datagrid之类的id2、在使用页面的Page_Load()里面写上 usingSystem;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem....

weixin_33857230的博客 181

easyui datagrid 没有记录

datagrid返回记录为0时显示"没有记录" datagrid 插件编写 <script> var emptyview = $.extend({},$.fn.datagrid.defaults.view,{ onAfterRender:function(target){ $.fn.datagrid.defaults.view.onAfterRende...

alili1991的博客 159

改善 DataGrid 的功能,提高客户的体验 1

DataGrid 提供了丰富的数据显示功能,但在对其进行扩展却不是十分的容易。好在它提供了很多的接口供我们扩展。 OnItemCommand:对自定义按钮定义 CommandName ,可通过 CommandName 来区分实现不同的功能。 <EditCommandColumn></EditCommandColumn> 内的接口 OnCanc...

weixin_30664539的博客 71

easyUI DataGrid

@author YHC 从$.fn.panel.defaults继承,覆盖默认值 $.fn.datagrid.defaults. datagrid 以列表形式显示数据,和提供丰富的功能支持,选择, 排序, 分组显示 和编辑数据,datagrid 的设计是为了减少开发时间,和开发者不需要对其特定的了解,它是一个拥有丰富功能的轻量级,表格合并,和多表头,列冻结,页脚,仅仅只是它的一部分功能.

YHC 1万+

easyui datagrid动态改变大小

easyui Layout中改变大小时对应datagrid大小自适应问题 由于center的layout中 datagrid被嵌入了一个div,当左右拖动west的Layout时,在Layout center中的datagrid宽度不变(可能是datagrid外面被嵌套了一个div吧,当没有div时好像是可以动态适应的),导致用户体验问题,通过panel的onResize事件去处理,将动态取得宽

qq_39205291的博客 5748

easyUI datagrid 时间格式化

easyUI datagrid 时间格式化

qq_44894655的博客 221

jquery-easyui中datagrid扩展,隐藏显示表头功能

今天,后台中需要新增一个功能,用户可以自由选择显示的列,之后保存到本地localStroage中。所以扩展了easyui中datagrid的onHeaderContextMenu方法。 使用方法: _this.$table.datagrid(_.extend({ fit: true, border:

love android 4812
上一篇: Asp.net中使用GDI+繪製圖形
下一篇: .NET開發Windows服務Step By Step
hdAptechIvan
博客等级 码龄22年 5粉丝 18原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值