asp.net 下 ext填充grid代码 .

Ext.NET入门:快速构建企业级Web应用的ASP.NET控件库 Ext.NET是基于Ext JS框架的ASP.NET控件库,它通过封装Ext JS的强大功能为服务器端控件,使开发者能够使用C#或VB.NET快速构建复杂Web界面。这种技术方案减少了前端开发工作量,特别适合需要快速开发企业级管理后台的场景。在ASP.NET生态中,Ext.NET与MVC和Web Forms无缝集成,提供了丰富的UI组件如数据网格、表单控件和多种布局系统。通过服务器端创建控件自动渲染为Ext JS组件的机制,开发者可以节省大量开发时间。对于需要处理复杂数据交互的企业应用,Ext.NET简化了 阅读详情
print ?
  1. /** 
  2.  * @author fox 
  3.  */  
  4. Ext.onReady(function() {  
  5.     Ext.BLANK_IMAGE_URL = 'extjs/resources/images/default/s.gif';  
  6.     Ext.QuickTips.init();  
  7.     //var sm = new Ext.grid.CheckboxSelectionModel();   
  8.     var cm = new Ext.grid.ColumnModel([  
  9.         new Ext.grid.RowNumberer(),  
  10.         //sm,   
  11.         { header: '用户编号', dataIndex: 'user_code', sortable: true },  
  12.         { header: '电表编号', dataIndex: 'meter_num' },  
  13.         { header: '购电量', dataIndex: 'pur_power' },  
  14.         { header: '购电时间', dataIndex: 'pur_date' }  
  15.     ]);  
  16.   
  17.     var ds = new Ext.data.GroupingStore({  
  18.         proxy: new Ext.data.HttpProxy({ url: 'GetJson.aspx',method: 'post' }),  
  19.         reader: new Ext.data.JsonReader({  
  20.             root: 'data',  
  21.             totalProperty: 'totalRecordCount'  
  22.         }, [  
  23.             { name: 'user_code', mapping: 'user_code', type: 'string' },  
  24.             { name: 'meter_num', mapping: 'meter_num', type: 'string' },  
  25.             { name: 'pur_power', mapping: 'pur_power', type: 'int' },  
  26.             { name: 'pur_date', mapping: 'pur_date', type: 'string' }  
  27.   
  28.         ])  
  29.     });  
  30.   
  31.     var record_start = 0;   
  32.     var grid = new Ext.grid.GridPanel({  
  33.         el: 'grid3',  
  34.         ds: ds,  
  35.        // sm: sm,   
  36.         cm: cm,  
  37.         width: 700,  
  38.         height: 280,  
  39.         loadMask:{msg:'系统正在查询,请稍候......'},  
  40.         bbar: new Ext.PagingToolbar({  
  41.             pageSize: 10,  
  42.               
  43.             store: ds,  
  44.             displayInfo: true,  
  45.             displayMsg: '显示第 {0} 条到 {1} 条记录,一共 {2} 条',  
  46.             emptyMsg: "没有记录",  
  47.             doLoad : function(start)  
  48.             {  
  49.                record_start  = start;   
  50.                var o = {}, pn = this.paramNames;   
  51.                o[pn.start] = start;   
  52.                o[pn.limit] = this.pageSize;    
  53.                this.store.load({params:o});    
  54.             }  
  55.         })  
  56.     });  
  57.     //el:指定html元素用于显示grid   
  58.       
  59.    ds.load({ params: { start: 0, limit: 10} });  
  60.     grid.render(); //渲染表格   
  61.        
  62.       
  63. });  
/**
 * @author fox
 */
Ext.onReady(function() {
    Ext.BLANK_IMAGE_URL = 'extjs/resources/images/default/s.gif';
    Ext.QuickTips.init();
    //var sm = new Ext.grid.CheckboxSelectionModel();
    var cm = new Ext.grid.ColumnModel([
        new Ext.grid.RowNumberer(),
        //sm,
        { header: '用户编号', dataIndex: 'user_code', sortable: true },
        { header: '电表编号', dataIndex: 'meter_num' },
        { header: '购电量', dataIndex: 'pur_power' },
        { header: '购电时间', dataIndex: 'pur_date' }
    ]);

    var ds = new Ext.data.GroupingStore({
        proxy: new Ext.data.HttpProxy({ url: 'GetJson.aspx',method: 'post' }),
        reader: new Ext.data.JsonReader({
            root: 'data',
            totalProperty: 'totalRecordCount'
        }, [
            { name: 'user_code', mapping: 'user_code', type: 'string' },
            { name: 'meter_num', mapping: 'meter_num', type: 'string' },
            { name: 'pur_power', mapping: 'pur_power', type: 'int' },
            { name: 'pur_date', mapping: 'pur_date', type: 'string' }

        ])
    });

    var record_start = 0; 
    var grid = new Ext.grid.GridPanel({
        el: 'grid3',
        ds: ds,
       // sm: sm,
        cm: cm,
        width: 700,
        height: 280,
        loadMask:{msg:'系统正在查询,请稍候......'},
        bbar: new Ext.PagingToolbar({
            pageSize: 10,
            
            store: ds,
            displayInfo: true,
            displayMsg: '显示第 {0} 条到 {1} 条记录,一共 {2} 条',
            emptyMsg: "没有记录",
            doLoad : function(start)
            {
               record_start  = start; 
               var o = {}, pn = this.paramNames; 
               o[pn.start] = start; 
               o[pn.limit] = this.pageSize;  
               this.store.load({params:o});  
            }
        })
    });
    //el:指定html元素用于显示grid
    
   ds.load({ params: { start: 0, limit: 10} });
    grid.render(); //渲染表格
     
    
});


  1. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="GetJson.aspx.cs" Inherits="GetJson" %>  
  2. <%=strJsonSource %>  
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="GetJson.aspx.cs" Inherits="GetJson" %>
<%=strJsonSource %>

  1. public partial class GetJson : System.Web.UI.Page  
  2. {  
  3.     protected string strJsonSource = string.Empty;  
  4.     protected void Page_Load(object sender, EventArgs e)  
  5.     {  
  6.         int start = int.Parse(Request.Form["start"].Trim()); //获取页面显示的起始数   
  7.         int limit = int.Parse(Request.Form["limit"].Trim()); //获取每页记录数   
  8.           
  9.         SqlConnection conn = new SqlConnection();  
  10.         conn.ConnectionString = "server=(local);database=cpudata;user id =sa;password= 19790601";  
  11.         try  
  12.         {  
  13.             conn.Open();  
  14.             SqlCommand cmd = new SqlCommand();  
  15.             cmd.Connection = conn;  
  16.             cmd.CommandText = "select top 100 user_code,meter_num,pur_power,pur_date from pur_power_detail";  
  17.             SqlDataAdapter sda = new SqlDataAdapter(cmd);  
  18.             DataSet ds = new DataSet();  
  19.             sda.Fill(ds);  
  20.             int pageCount = ds.Tables[0].Rows.Count;  
  21.             DataTable dt = ds.Tables[0];  
  22.             strJsonSource = DataTableToJson(dt, "data", start, limit);  
  23.   
  24.               
  25.   
  26.               
  27.    
  28.   
  29.   
  30.         }  
  31.         catch (Exception ex)  
  32.         {  
  33.   
  34.             Response.Write(ex.Message);  
  35.         }  
  36.         finally  
  37.         {  
  38.             conn.Close();  
  39.         }  
  40.   
  41.         HttpContext.Current.Response.Write(strJsonSource);  
  42.         HttpContext.Current.Response.End();  
  43.           
  44.   
  45.   
  46.   
  47.   
  48.   
  49.   
  50.   
  51.   
  52.         //strJsonSource = ReturnJson.JsonString();   
  53.         //HttpContext.Current.Response.Write(strJsonSource);   
  54.         //HttpContext.Current.Response.End();   
  55.     }  
  56.     public static string DataTableToJson(DataTable dt, string strTableName, int start, int limit)  
  57.     {  
  58.         StringBuilder jsonBuilder = new StringBuilder();  
  59.         string head = "{ success:true,\"totalRecordCount\":\"" + dt.Rows.Count.ToString() + "\",\"";  
  60.         //jsonBuilder.Append("{\"");   
  61.         string tmpStr = "";  
  62.         jsonBuilder.Append(strTableName);  
  63.         jsonBuilder.Append("\":[");  
  64.         if (dt.Rows.Count > 0)  
  65.         {  
  66.             int endCount = start + limit;  
  67.             if (endCount > dt.Rows.Count)  
  68.                 endCount = dt.Rows.Count;  
  69.             for (int i = start; i < endCount; i++)  
  70.             {  
  71.                 jsonBuilder.Append("{");  
  72.                 for (int j = 0; j < dt.Columns.Count; j++)  
  73.                 {  
  74.                     jsonBuilder.Append("\"");  
  75.                     jsonBuilder.Append(dt.Columns[j].ColumnName);  
  76.                     jsonBuilder.Append("\":\"");  
  77.                     tmpStr = dt.Rows[i][j].ToString().Trim();  
  78.   
  79.                     jsonBuilder.Append(tmpStr.Replace("\"", "\\\""));  
  80.                     jsonBuilder.Append("\",");  
  81.                 }  
  82.                 jsonBuilder.Remove(jsonBuilder.Length - 1, 1);  
  83.                 jsonBuilder.Append("},");  
  84.             }  
  85.             jsonBuilder.Remove(jsonBuilder.Length - 1, 1);  
  86.         }  
  87.         jsonBuilder.Append("]");  
  88.         jsonBuilder.Append("}");  
  89.         return head + jsonBuilder.ToString();  
  90.     }  
  91. }  
public partial class GetJson : System.Web.UI.Page
{
    protected string strJsonSource = string.Empty;
    protected void Page_Load(object sender, EventArgs e)
    {
        int start = int.Parse(Request.Form["start"].Trim()); //获取页面显示的起始数
        int limit = int.Parse(Request.Form["limit"].Trim()); //获取每页记录数
        
        SqlConnection conn = new SqlConnection();
        conn.ConnectionString = "server=(local);database=cpudata;user id =sa;password= 19790601";
        try
        {
            conn.Open();
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = conn;
            cmd.CommandText = "select top 100 user_code,meter_num,pur_power,pur_date from pur_power_detail";
            SqlDataAdapter sda = new SqlDataAdapter(cmd);
            DataSet ds = new DataSet();
            sda.Fill(ds);
            int pageCount = ds.Tables[0].Rows.Count;
            DataTable dt = ds.Tables[0];
            strJsonSource = DataTableToJson(dt, "data", start, limit);

            

            
 


        }
        catch (Exception ex)
        {

            Response.Write(ex.Message);
        }
        finally
        {
            conn.Close();
        }

        HttpContext.Current.Response.Write(strJsonSource);
        HttpContext.Current.Response.End();
        








        //strJsonSource = ReturnJson.JsonString();
        //HttpContext.Current.Response.Write(strJsonSource);
        //HttpContext.Current.Response.End();
    }
    public static string DataTableToJson(DataTable dt, string strTableName, int start, int limit)
    {
        StringBuilder jsonBuilder = new StringBuilder();
        string head = "{ success:true,\"totalRecordCount\":\"" + dt.Rows.Count.ToString() + "\",\"";
        //jsonBuilder.Append("{\"");
        string tmpStr = "";
        jsonBuilder.Append(strTableName);
        jsonBuilder.Append("\":[");
        if (dt.Rows.Count > 0)
        {
            int endCount = start + limit;
            if (endCount > dt.Rows.Count)
                endCount = dt.Rows.Count;
            for (int i = start; i < endCount; i++)
            {
                jsonBuilder.Append("{");
                for (int j = 0; j < dt.Columns.Count; j++)
                {
                    jsonBuilder.Append("\"");
                    jsonBuilder.Append(dt.Columns[j].ColumnName);
                    jsonBuilder.Append("\":\"");
                    tmpStr = dt.Rows[i][j].ToString().Trim();

                    jsonBuilder.Append(tmpStr.Replace("\"", "\\\""));
                    jsonBuilder.Append("\",");
                }
                jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
                jsonBuilder.Append("},");
            }
            jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
        }
        jsonBuilder.Append("]");
        jsonBuilder.Append("}");
        return head + jsonBuilder.ToString();
    }
}



Ext.NET框架解析与遗留系统维护指南 Ext.NET作为基于ASP.NET的Web应用程序框架,通过封装Ext JS库实现了服务端驱动的富客户端开发。其核心架构采用服务端-客户端混合模式,自动生成JavaScript代码,显著降低前端技术门槛。在技术选型层面,这类框架的价值在于平衡开发效率与功能复杂度,特别适合企业级后台管理系统、数据可视化看板等场景。随着技术演进,虽然Ext.NET已终止维护,但理解其控件体系(如GridPanel、TreePanel)和通信机制(ViewState/AJAX)对处理遗留系统至关重要。对于需要迁移的项目,可考虑 阅读详情

相关推荐

Ext.NET框架终止维护:技术演进与迁移指南

企业级Web开发中,前端框架与后端技术的深度集成一直是提升开发效率的关键。Ext.NET作为经典的ASP.NET组件库,通过封装Ext JS实现了服务器端控件化开发,曾显著降低.NET开发者构建复杂界面的门槛。其核心原理基于服务器端渲染架构,利用ViewState机制简化状态管理,特别适合ERP、CMS等管理系统快速开发。但随着React/Vue等现代前端框架的兴起,Ext.NET在包体积、响应式支持和开发模式上逐渐显现劣势。本文通过解析Ext.NET的技术架构与典型应用场景,探讨其终止维护的深层原因,并为

weixin_30555515的博客 349

asp.net 下 ext填充grid代码

/** * @author fox */ Ext.onReady(function() { Ext.BLANK_IMAGE_URL = 'extjs/resources/images/default/s.gif'; Ext.QuickTips.init(); //var sm = new Ext.grid.CheckboxSelectionModel(); va...

java开发指南博客 【转载】 126

[Ext.Net] 1.2.0/Ext JS_用 Ext JS 增删改 Ext.Net.Store

Ext.Net 1.2.0/Ext JS_用 Ext JS 增删改 Ext.Net.Store 本文内容 引入 演示用 Ext JS 增删改 Ext.Net.Store 说明 参考资料 修改记录   引入 当我使用 Ext.Net 时,始终不能摆脱最初开发 asp.net 应用程序的方式,也就是,前后台的交互。当你用 asp.net 的思维方式,开发 Ext.Net 时

德仔 4336

Ext Tree resources/images/default/s.gif图片显示问题

昨天在用Tree 时发现Ext在生成Tree时默认总是试图访问http://extjs.com/s.gif下载s.gif,在局域网类数的节点导航图片显示不出来。今天在网上搜了一下,解决方案是:在Ext.onReady()方法之前加上 Ext.BLANK_IMAGE_URL = ../ExtResources/resources/images/default/s.gif; 即可。

1356

Ext.NET Pro 2.3.1 前端开发框架实战解析

Ext.NET Pro 2.3.1 是一个基于 .NET 平台构建的高级 Web 开发框架,深度融合了 Ext JS 强大的前端 UI 库与 .NET 后端开发能力。该框架支持 MVC 与 WebForms 两种主流开发模式,为企业级应用开发提供了高效、稳定、可扩展的解决方案。其核心优势在于:前后端一体化:通过封装 Ext JS 控件,开发者可直接在 .NET 代码中定义复杂的用户界面。开发效率高:提供大量可复用组件与声明式编程模型,降低 UI 开发复杂度。

weixin_28840811的博客 718

【机械视觉】Halcon—【二、Halcon算子全面介绍(超详细版)】

Halcon 的算子(operators)按照功能被系统性地划分为多个类别,官方文档中目前(Halcon 22.11 版本)共有 19 个主分类,每个主分类下还有若干子分类。 本人在此对这19个分类的常用核心算子进行了一系列的总结,且本人在文章最后还总结了一些案例经验。 注意: ​​​​​​​跨分类调用:某些算子可能在多个分类中,但官方文档中会明确其主分类。 例如: read_image(文件操作)常被其他分类(如图像处理)的示例调用,但其核心功能是文件读取。

qq_3517289697的博客 3913

ExtJS 的s.gif的问题

在调试 EXTJs的例子时,经常会去访问 http://extjs.com/s.gif, 如果不能访问国外的网站,则常会等很久页面才能加载完成,而且还会影响界面美观。 解决办法 修改/adapter/ext/ext-base.js文件 在文件中搜索  BLANK_IMAGE_URL  然后将:BLANK_IMAGE_URL:"http:/"+"/extjs.com/s

wuseyukui的专栏 1820

从FinFET到GAA:手把手解读2nm芯片制造的关键技术(含BSPDN避坑指南)

本文深入解读了2nm芯片制造从FinFET向全环绕栅极(GAA)晶体管架构演进的核心技术,并重点剖析了背面供电网络(BSPDN)的三种实现路径及其工程挑战。文章旨在帮助工程师理解技术变革的内在逻辑,并为应对2nm节点设计中的关键问题提供实用指南。

weixin_29294975的博客 292

ExtJS Grid 与 Asp.NET 通信

几点说明 所谓的与Asp.NET通信,并不是说 ExtJS 用HTML写,然后再与Asp.NET通信。我们可以选择使用Html作为 ExtJS 的主体容器的。所谓的通信,主要是通过 ExtJS 中的 Ajax 访问一个独立的 Asp.NET 页面(就是ASPX为扩展名的页面)来进行的。这里只使用一条记录的数据,主要是因为做起来比较方便,如果需要,可以通过序列List来回传

孤灯下的倩影的专栏 730

【python快速编程入门(第二版)黑马程序员课后编程题】

python快速编程入门(第二版)黑马程序员课后编程题

weixin_46167259的博客 1万+

COMSOL解的继承

COMSOL解的继承1. 应用场景2. 实现方法2.1. 添加研究步骤2.2. 引用研究 根据参考文献整理而来,原文见: http://blog.sina.com.cn/s/blog_4a0a8b5d010126w5.html https://www.zhihu.com/question/371867999/answer/1309194094 个人学习笔记,如有疏漏,欢迎补充 1. 应用场景 在COMSOL模拟中,一次求解之后往往遇到以下几种情况需要用到解的继承: 1)瞬态求解的继续运算。例如初始设定求解1

jessica0307的博客 1万+

Ext.Net-Grid 篇

概述 前两篇分别介绍了Ext.NET-基础 和 Ext.NET-布局,从本篇开始我们尽量做一些实际工作中用到的例子。 在Ext.NET官方示例中,关于GridPanel的例子是最多的(近百个),篇幅所限,我们这里只介绍一些常用的功能,包括页面布局、新建、编辑、查询、删除、排序、分组、统计等功能。 示例代码下载地址>>>>> 页面总体布局 首先,再来熟悉下前一...

377

BUPT软件安全实验三

可以看出栈溢出对程序运行的安全性有很大的威胁,如果不对栈进行保护,只要系统中存在栈溢出漏洞,即可令攻击者通过非正当方法获取操作权限。(6)解决思考题,即:在不修改StackOverrun程序源代码的情况下,构造shellcode,通过JMP ESP的方式实现通过记事本打开shellcode.txt(可使用CreateProcessA或WinExec等API)。查看缓冲区信息,可以看到dest指向地址0x0012FAF0,其为数组的存放起始位置,也就是shellcode注入的起始位置。

7xun's space 1965

Ext Grid Json分页(asp.net)

首先感叹extjs的强大,无以言表! 今天瞎弄了很久的grid,看了很多网上的例子和教程,终于搞定了分页和返回的json数据中存在换行符的问题。 刚开始参照网上的例子怎么弄都不能分页,经过调试发现ds.load({params:{start:0,limit:10}});这句话中的参数在后台用Request.QueryString["start"]这种方式获取不到数据,困了我好久,一...

163

【SPSS实战】手动实现Quade非参数协方差分析:从数据准备到结果解读

本文详细介绍了在SPSS中手动实现Quade非参数协方差分析的全过程。针对数据不满足正态性和方差齐性假设时,如何通过秩转换、回归调整残差,并最终利用Kruskal-Wallis检验完成组间比较。该方法为处理含协变量的非参数多组比较问题提供了清晰的实战解决方案,并探讨了其与标准Quade检验的异同及适用场景。

weixin_29306317的博客 356

大模型之Spring AI实战系列(二十一):Spring AI + MCP + 本地文件系统实战指南

在上一篇文章中,我们学习了如何使用 Spring AI 集成 Model Context Protocol (MCP),并通过 Brave Search 实现了互联网搜索能力的接入。本文将继续深入 Spring AI 的 MCP 实战能力,介绍如何将 **本地文件系统** 封装为 LLM 可调用的工具

寻道AI,探索AI无限可能! 2516

Ext.NET框架实战:高效构建企业级Web应用

Ext.NET作为基于Ext JS的ASP.NET组件库,将前端交互能力与.NET生态深度整合,显著提升企业级Web应用的开发效率。其核心原理是通过服务端控件封装复杂前端逻辑,支持MVVM/MVC模式,提供50+开箱即用组件(如GridPanel、FormPanel)。在技术价值层面,Ext.NET特别适合快速构建管理后台、数据看板等场景,通过Ajax回调、DirectMethod等通信机制实现高效前后端交互。实际应用中,开发者可结合Visual Studio设计器快速搭建界面,利用Sass定制主题,并通过

weixin_30367169的博客 406

智慧安防:基于Java+YOLOv8的视频AI识别平台设计与实现

张工,我们的园区智慧安防项目又出问题了!用Python写的YOLOv8 demo,拉3路RTSP流就卡,视频延迟超过5秒,入侵检测误报率太高,一到晚上光线差就全是误报,而且和我们的Java安防平台对接太麻烦,还要搭个消息队列,架构复杂得要死!“别慌,用Java+YOLOv8啊!

2601_94871597的博客 196

EXT.NET GridPanel 鼠标经过列位置tip提示内容

鼠标经过列位置tip显示列内容(参考Ext.NET Examples Explorer【GridPanel Row with ToolTip】): JS: var showTip = function () { var rowIndex = GridPanel1.view.findRowIndex(this.triggerEle

sharionlee 1844

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Ext.NET-布局篇

概述 前一篇介绍了Ext.NET基础知识,并对Ext.NET布局进行了简要的说明,本文中我们用一个完整的示例代码来看看Ext.NET的布局。 示例代码下载地址>>>>> 本文目的 本文使用Tree、Grid应该是我们最为常用的控件,实现自适应的页面布局, 顶端:使用Panel,可折叠; 左侧:使用TreePanel,可折叠; 中间:使用GridPanel...

261

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Ext Grid 状态保存

Ext Grid 状态保存 直接进入主题 一直使用Ext开发系统,遇到grid 列比较多的时候 ,有些人需要有些人不需要,则需要保存grid 的状态。 目前有三种方法 1.启用自带cookie保存 2.使用扩展SessionProvider 3.使用扩展HttpProvider  这次主要使用1和3。 1,启用自带cookie保存状态

一亩三分地 1566

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Ext.grid.GridPanel + asp.net 数据分页

Ext.grid.GridPanel + asp.net 数据分页 【转】http://www.cnblogs.com/tujiang/archive/2009/07/03/1516488.html 客户端显示数据页面,当然也可以用静态的html页面 http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> http:/

GoodShot的专栏 1154
上一篇: Ext.grid.GridPanel + asp.net 数据分页
下一篇: Ext.data.SimpleStore的使用方法
GoodShot
博客等级 码龄22年 968粉丝 281原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值