动态的Datagrid类

None.gifusing System;
None.gif
using System.Data;
None.gif
using System.Collections;
None.gif
using System.ComponentModel;
None.gif
using System.Web;
None.gif
using System.Web.SessionState;
None.gif
using System.Web.UI;
None.gif
using System.Web.UI.WebControls;
None.gif
None.gif
namespace IMS.Class
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
ExpandedSubBlockStart.gifContractedSubBlock.gif    
/**//// <summary>
InBlock.gif    
/// DynamicDataGrid 的摘要说明。
ExpandedSubBlockEnd.gif    
/// </summary>

InBlock.gif    public class DynamicDataGrid
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
//        string DataGridName;
InBlock.gif
        string DataGridHeader;
InBlock.gif        
string PermStr;
InBlock.gif        Page P;
InBlock.gif        DataTable dt;
InBlock.gif        DataGrid dg;
InBlock.gif        
string ModifyLinkFileName,DeleteLinkFileName,ViewLinkFlieName;
InBlock.gif        
string DataGridHeaderStr;
InBlock.gif        
int Type;
InBlock.gif        
bool Mflag=false;
InBlock.gif        
bool Dflag=false;
InBlock.gif        
public DynamicDataGrid()
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
//
InBlock.gif            
// TODO: 在此处添加构造函数逻辑
InBlock.gif            
//
ExpandedSubBlockEnd.gif
        }

ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//// <summary>
InBlock.gif        
/// 构造动态DataGrid
InBlock.gif        
/// </summary>
InBlock.gif        
/// <param name="DG">将改变的DataGrid</param>
InBlock.gif        
/// <param name="Headerstr">头标题,用于在界面的datagrid头标题上显示的汉字</param>
InBlock.gif        
/// <param name="Header">对应于头标题,取数据库中的各字段</param>
InBlock.gif        
/// <param name="PermissionStr">权限(字符串,以逗号分隔开)</param>
InBlock.gif        
/// <param name="dtable">绑定的数据源(DataTable)</param>
InBlock.gif        
/// <param name="LinkModifyFile">修改转向的页面的链接</param>
InBlock.gif        
/// <param name="LinkDeleteFile">删除转向的页面的链接</param>
InBlock.gif        
/// <param name="LinkViewFile">浏览转向的页面的链接</param>
ExpandedSubBlockEnd.gif        
/// <param name="TypeId">int型</param>

InBlock.gif        public DynamicDataGrid(Page p, DataGrid DG,string Headerstr,string Header,string PermissionStr,DataTable dtable,string LinkModifyFile,string LinkDeleteFile,string LinkViewFile,int TypeId)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
this.P=p;
InBlock.gif            
this.dg=DG;
InBlock.gif
//            this.dg.DataSource=null;
InBlock.gif
            this.DataGridHeader=Header;
InBlock.gif            
this.DataGridHeaderStr=Headerstr;
InBlock.gif            
this.dt=dtable;
InBlock.gif            
this.DeleteLinkFileName=LinkDeleteFile;
InBlock.gif            
this.ModifyLinkFileName=LinkModifyFile;
InBlock.gif            
this.ViewLinkFlieName=LinkViewFile;
InBlock.gif            
this.PermStr=PermissionStr;
InBlock.gif            
this.Type=TypeId;
InBlock.gif            
this.ModifyDataGrid();
InBlock.gif            
//
InBlock.gif            
// TODO: 在此处添加构造函数逻辑
InBlock.gif            
//
ExpandedSubBlockEnd.gif
        }

InBlock.gif
InBlock.gif        
public DataGrid ModifyDataGrid()
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
//datagrid样式
InBlock.gif
            this.dg.Columns.Clear();
InBlock.gif            
this.dg.AllowSorting=true;//允许排序
InBlock.gif
            this.dg.AllowPaging=true;//允许分页
InBlock.gif
            this.dg.PageSize=20;//每页15项
InBlock.gif
            this.dg.PagerStyle.Mode=PagerMode.NumericPages;
InBlock.gif            
this.dg.PagerStyle.BackColor=System.Drawing.Color.FromName("#AAAADD");
InBlock.gif            
this.dg.PagerStyle.HorizontalAlign=HorizontalAlign.Right;
InBlock.gif            
this.dg.AutoGenerateColumns=false;
InBlock.gif            
this.dg.BackColor=System.Drawing.Color.White;//datagrid背景色设为天蓝色
InBlock.gif
            this.dg.BorderStyle=BorderStyle.Ridge;//边框样式
InBlock.gif
            this.dg.BorderWidth=1;//DataGrid的边框宽度
InBlock.gif
//            this.dg.CaptionAlign=TableCaptionAlign.Bottom;
InBlock.gif
            this.dg.HorizontalAlign=HorizontalAlign.Center;//datagrid相对于页面居中
InBlock.gif
            this.dg.ItemStyle.HorizontalAlign=HorizontalAlign.Left;//datagrid中文字居左对齐
InBlock.gif
            this.dg.CellPadding=5;
InBlock.gif            
this.dg.CellSpacing=1;
InBlock.gif            
this.dg.DataKeyField="Id";
InBlock.gif            
this.dg.HeaderStyle.BackColor=System.Drawing.Color.FromName("#D6DFF7");
InBlock.gif            
this.dg.HeaderStyle.HorizontalAlign=HorizontalAlign.Left;//标题居左对齐
InBlock.gif
            this.dg.HeaderStyle.Font.Bold=true;//标题字体加粗
InBlock.gif
            this.dg.HeaderStyle.Font.Size=FontUnit.XLarge;
InBlock.gif            
this.dg.AlternatingItemStyle.BackColor=System.Drawing.Color.AliceBlue;
InBlock.gif            
this.dg.ItemCreated+=new DataGridItemEventHandler(dg_ItemCreated);
InBlock.gif            
this.dg.Attributes.Add("style","word-break:keep-all;word-wrap:normal");
InBlock.gif            
this.dg.PageIndexChanged+=new DataGridPageChangedEventHandler(dg_PageIndexChanged);
InBlock.gif            
//动态创建模板列
InBlock.gif
            string[] HeaderStr=this.DataGridHeader.Split(',');
InBlock.gif            
string[] HeaderStr1=this.DataGridHeaderStr.Split(',');
InBlock.gif            
int HeaderCount=HeaderStr.Length;
InBlock.gif            
for(int i=0;i<HeaderCount;i++)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                TemplateColumn Tm
=new TemplateColumn();
InBlock.gif                Tm.ItemTemplate
=new ColumnTemplate(HeaderStr[i],this.P);
InBlock.gif                Tm.HeaderText
=HeaderStr1[i];
InBlock.gif                
this.dg.Columns.Add(Tm);
ExpandedSubBlockEnd.gif            }

InBlock.gif            
//建立查看、修改和删除列
InBlock.gif
            if(this.Type==1)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                HyperLinkColumn hl
=new HyperLinkColumn();
InBlock.gif                hl.HeaderText
="浏览";
InBlock.gif                hl.Text
="浏览";
InBlock.gif                hl.ItemStyle.Width
=30;
InBlock.gif                hl.HeaderStyle.Width
=30;
InBlock.gif                
this.dg.Columns.Add(hl);
InBlock.gif
ExpandedSubBlockEnd.gif            }

InBlock.gif            
else if(this.Type==0)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                
if(this.PermStr.IndexOf("修改")>-1)
ExpandedSubBlockStart.gifContractedSubBlock.gif                
dot.gif{
InBlock.gif                    HyperLinkColumn hl
=new HyperLinkColumn();
InBlock.gif                    hl.HeaderText
="修改";
InBlock.gif                    hl.Text
="修改";
InBlock.gif                    hl.ItemStyle.Width
=30;
InBlock.gif                    hl.HeaderStyle.Width
=30;
InBlock.gif                    
this.dg.Columns.Add(hl);
InBlock.gif                    
this.Mflag=true;
InBlock.gif                    
if(this.PermStr.IndexOf("删除")>-1)
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
dot.gif{
InBlock.gif                        HyperLinkColumn hl1
=new HyperLinkColumn();
InBlock.gif                        hl1.HeaderText
="删除";
InBlock.gif                        hl1.Text
="删除";
InBlock.gif                        hl1.ItemStyle.Width
=30;
InBlock.gif                        hl1.HeaderStyle.Width
=30;
InBlock.gif                        
this.dg.Columns.Add(hl1);
InBlock.gif                        
this.Dflag=true;
InBlock.gif
ExpandedSubBlockEnd.gif                    }

ExpandedSubBlockEnd.gif                }

InBlock.gif                
else if(this.PermStr.IndexOf("删除")>-1)
ExpandedSubBlockStart.gifContractedSubBlock.gif                
dot.gif{
InBlock.gif                    HyperLinkColumn hl
=new HyperLinkColumn();
InBlock.gif                    hl.HeaderText
="删除";
InBlock.gif                    hl.Text
="删除";
InBlock.gif                    hl.ItemStyle.Width
=30;
InBlock.gif                    hl.HeaderStyle.Width
=30;
InBlock.gif                    
this.dg.Columns.Add(hl);
InBlock.gif                    
this.Dflag=true;
ExpandedSubBlockEnd.gif                }

ExpandedSubBlockEnd.gif            }

InBlock.gif            
else if(this.Type==3)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                    HyperLinkColumn hl
=new HyperLinkColumn();
InBlock.gif                    hl.HeaderText
="浏览";
InBlock.gif                    hl.Text
="浏览";
InBlock.gif                    hl.ItemStyle.Width
=30;
InBlock.gif                    hl.HeaderStyle.Width
=30;
InBlock.gif                    
this.dg.Columns.Add(hl);
InBlock.gif                    
this.Mflag=true;
InBlock.gif                    HyperLinkColumn hd
=new HyperLinkColumn();
InBlock.gif                    hd.HeaderText
="删除";
InBlock.gif                    hd.Text
="删除";
InBlock.gif                    hd.ItemStyle.Width
=30;
InBlock.gif                    hd.HeaderStyle.Width
=30;
InBlock.gif                    
this.dg.Columns.Add(hd);
InBlock.gif                    
this.Dflag=true;
ExpandedSubBlockEnd.gif            }

InBlock.gif            
while(this.dg.CurrentPageIndex   *   this.dg.PageSize   >   this.dt.Rows.Count)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                
this.dg.CurrentPageIndex--
ExpandedSubBlockEnd.gif            }

InBlock.gif            
try
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                
this.dg.DataSource=this.dt;
InBlock.gif                
this.dg.DataBind();
InBlock.gif                
return this.dg;
ExpandedSubBlockEnd.gif            }

InBlock.gif            
catch(Exception err)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                
throw new Exception(err.Message);
ExpandedSubBlockEnd.gif            }

ExpandedSubBlockEnd.gif        }

InBlock.gif
InBlock.gif
InBlock.gif        
private void dg_ItemCreated(object sender, DataGridItemEventArgs e)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
for(int i = 0; i < e.Item.Cells.Count; i++
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif// e.Item.Cells[x]是当前行中的单元格 
InBlock.gif
                e.Item.Cells[i].Wrap = false
ExpandedSubBlockEnd.gif            }
 
InBlock.gif
InBlock.gif            
if ( e.Item.ItemType == ListItemType.Pager)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                
//Add a new Label Control
InBlock.gif
                Label lblPagerText = new Label();
InBlock.gif                lblPagerText.Text 
= " 页码 --> " ;
InBlock.gif                lblPagerText.ID 
= "lblPagerText1";
InBlock.gif                lblPagerText.Font.Bold 
= false;
InBlock.gif                lblPagerText.Attributes.Add(
"onmouseover","this.style.fontWeight='bold'");
InBlock.gif                lblPagerText.Attributes.Add(
"onmouseout","this.style.fontWeight='normal'");
InBlock.gif                
//Finally add label to Pager control collection 
InBlock.gif
                if ( e.Item.Controls[0].FindControl("lblPagerText1" ) == null)
ExpandedSubBlockStart.gifContractedSubBlock.gif                
dot.gif{
InBlock.gif                
InBlock.gif                    e.Item.Controls[
0].Controls.AddAt(0,lblPagerText);
ExpandedSubBlockEnd.gif                }

InBlock.gif                
return;
ExpandedSubBlockEnd.gif            }
//end if 
InBlock.gif

InBlock.gif            
if(this.dg.CurrentPageIndex   *   this.dg.PageSize   >   this.dt.Rows.Count)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                
this.dg.CurrentPageIndex--
InBlock.gif                
return;
ExpandedSubBlockEnd.gif            }

InBlock.gif
InBlock.gif            
if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem) 
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif
InBlock.gif                
int Id=(int)this.dg.DataKeys[e.Item.ItemIndex];
InBlock.gif                
bool Flag=false;
InBlock.gif                
int QualiTypeId=-1;
InBlock.gif                DataChecked GetQuali
=new DataChecked();
InBlock.gif                
if(this.DataGridHeaderStr.IndexOf("工作单位")!=-1)
InBlock.gif                    QualiTypeId
=GetQuali.GetQualification(Id,"DelegateInfo");
InBlock.gif                
else if(this.DataGridHeaderStr.IndexOf("代表资格")!=-1)
InBlock.gif                    QualiTypeId
=GetQuali.GetQualification(Id,"QualificationInfo");
InBlock.gif                
else if(this.DataGridHeaderStr.IndexOf("履职项目")!=-1)
InBlock.gif                    QualiTypeId
=GetQuali.GetQualification(Id,"DelegateDuty");
InBlock.gif                
if(QualiTypeId==2)
ExpandedSubBlockStart.gifContractedSubBlock.gif                
dot.gif{
InBlock.gif                    Flag
=true;
InBlock.gif                    e.Item.ForeColor
=System.Drawing.Color.Gray;
ExpandedSubBlockEnd.gif                }

InBlock.gif                
else if(QualiTypeId==3)
ExpandedSubBlockStart.gifContractedSubBlock.gif                
dot.gif{
InBlock.gif                    Flag
=true;
InBlock.gif                    e.Item.ForeColor
=System.Drawing.Color.Red;
ExpandedSubBlockEnd.gif                }

InBlock.gif                
InBlock.gif                
if(this.Type==1)
ExpandedSubBlockStart.gifContractedSubBlock.gif                
dot.gif{
InBlock.gif                    ((HyperLink)e.Item.Cells[e.Item.Cells.Count
-1].Controls[0]).NavigateUrl=this.ViewLinkFlieName+"?id="+Id.ToString();
ExpandedSubBlockEnd.gif                }

InBlock.gif                
else if(this.Type==0)
ExpandedSubBlockStart.gifContractedSubBlock.gif                
dot.gif{
InBlock.gif                    
if(Flag)
InBlock.gif                        
return;
InBlock.gif                    
if(this.Mflag&&this.Dflag)
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
dot.gif{
InBlock.gif                        ((HyperLink)e.Item.Cells[e.Item.Cells.Count
-2].Controls[0]).NavigateUrl=this.ModifyLinkFileName+"?id="+Id.ToString();
InBlock.gif                        ((HyperLink)e.Item.Cells[e.Item.Cells.Count
-1].Controls[0]).Attributes.Add("onclick",   "return confirm('您真的要删除吗?')");
InBlock.gif                        ((HyperLink)e.Item.Cells[e.Item.Cells.Count
-1].Controls[0]).NavigateUrl=this.DeleteLinkFileName+"?id="+Id.ToString();
ExpandedSubBlockEnd.gif                    }

InBlock.gif                    
else if(this.Dflag)
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
dot.gif{
InBlock.gif                        ((HyperLink)e.Item.Cells[e.Item.Cells.Count
-1].Controls[0]).Attributes.Add("onclick",   "return confirm('您真的要删除吗?')");
InBlock.gif                        ((HyperLink)e.Item.Cells[e.Item.Cells.Count
-1].Controls[0]).NavigateUrl=this.DeleteLinkFileName+"?id="+Id.ToString();
ExpandedSubBlockEnd.gif                    }

InBlock.gif                    
else if(this.Mflag)
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
dot.gif{
InBlock.gif                        ((HyperLink)e.Item.Cells[e.Item.Cells.Count
-1].Controls[0]).NavigateUrl=this.ModifyLinkFileName+"?id="+Id.ToString();
ExpandedSubBlockEnd.gif                    }

ExpandedSubBlockEnd.gif                }

InBlock.gif                
else if(this.Type==3)
ExpandedSubBlockStart.gifContractedSubBlock.gif                
dot.gif{
InBlock.gif                    
if(Flag)
InBlock.gif                        
return;
InBlock.gif                    
if(this.Mflag&&this.Dflag)
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
dot.gif{
InBlock.gif                        ((HyperLink)e.Item.Cells[e.Item.Cells.Count
-2].Controls[0]).NavigateUrl=this.ModifyLinkFileName+"?id="+Id.ToString();
InBlock.gif                        ((HyperLink)e.Item.Cells[e.Item.Cells.Count
-1].Controls[0]).Attributes.Add("onclick",   "return confirm('您真的要删除吗?')");
InBlock.gif                        ((HyperLink)e.Item.Cells[e.Item.Cells.Count
-1].Controls[0]).NavigateUrl=this.DeleteLinkFileName+"?id="+Id.ToString();
ExpandedSubBlockEnd.gif                    }

InBlock.gif                    
else if(this.Dflag)
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
dot.gif{
InBlock.gif                        ((HyperLink)e.Item.Cells[e.Item.Cells.Count
-1].Controls[0]).Attributes.Add("onclick",   "return confirm('您真的要删除吗?')");
InBlock.gif                        ((HyperLink)e.Item.Cells[e.Item.Cells.Count
-1].Controls[0]).NavigateUrl=this.DeleteLinkFileName+"?id="+Id.ToString();
ExpandedSubBlockEnd.gif                    }

InBlock.gif                    
else if(this.Mflag)
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
dot.gif{
InBlock.gif                        ((HyperLink)e.Item.Cells[e.Item.Cells.Count
-1].Controls[0]).NavigateUrl=this.ModifyLinkFileName+"?id="+Id.ToString();
ExpandedSubBlockEnd.gif                    }

ExpandedSubBlockEnd.gif                }

InBlock.gif                
//end if
InBlock.gif

InBlock.gif                e.Item.Attributes.Add(
"onmouseover","this.style.backgroundColor='seashell'"); 
InBlock.gif                
if(e.Item.ItemType == ListItemType.Item) 
ExpandedSubBlockStart.gifContractedSubBlock.gif                
dot.gif
InBlock.gif                    e.Item.Attributes.Add(
"onmouseout""this.style.backgroundColor='white'"); 
ExpandedSubBlockEnd.gif                }
 
InBlock.gif
InBlock.gif                
if(e.Item.ItemType ==ListItemType.AlternatingItem) 
ExpandedSubBlockStart.gifContractedSubBlock.gif                
dot.gif
InBlock.gif                    e.Item.Attributes.Add(
"onmouseout""this.style.backgroundColor='AliceBlue'"); 
ExpandedSubBlockEnd.gif                }
 
InBlock.gif
InBlock.gif
ExpandedSubBlockEnd.gif            }
//end if
ExpandedSubBlockEnd.gif
        }

InBlock.gif
InBlock.gif
InBlock.gif
InBlock.gif
InBlock.gif        
private void dg_PageIndexChanged(object source, DataGridPageChangedEventArgs e)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif
//            int count = this.dt.Rows.Count;
InBlock.gif
//            int Page=((count%this.dg.PageSize)>0)?(count/this.dg.PageSize)+1:(count/this.dg.PageSize);
InBlock.gif
//            this.dg.CurrentPageIndex=(Page>e.NewPageIndex)?e.NewPageIndex:Page;
InBlock.gif
            this.dg.CurrentPageIndex=e.NewPageIndex;
InBlock.gif            
this.dg.DataSource=this.dt;
InBlock.gif            
this.dg.DataBind();
ExpandedSubBlockEnd.gif        }

InBlock.gif
InBlock.gif
InBlock.gif
InBlock.gif
ExpandedSubBlockEnd.gif    }

InBlock.gif
InBlock.gif    
public class ColumnTemplate : ITemplate 
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif
InBlock.gif        
//第一个模板列 
InBlock.gif
        string Str;
InBlock.gif        Page p;
InBlock.gif        
public ColumnTemplate(string str,Page P)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
this.p=P;
InBlock.gif
InBlock.gif            
this.Str=str;
ExpandedSubBlockEnd.gif        }

InBlock.gif        
public void InstantiateIn(Control container)       
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif
InBlock.gif            LiteralControl l 
= new LiteralControl(); 
InBlock.gif            l.DataBinding 
+= new EventHandler(this.OnDataBinding); 
InBlock.gif            
//数据绑定 
InBlock.gif
            container.Controls.Add(l); 
InBlock.gif            
//为模板列加入LiteralControl 
ExpandedSubBlockEnd.gif
        }
 
InBlock.gif
InBlock.gif        
public void OnDataBinding(object sender, EventArgs e) 
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif
InBlock.gif            LiteralControl l 
= (LiteralControl) sender;//LiteralControl发送绑定请求 
InBlock.gif
            DataGridItem container = (DataGridItem) l.NamingContainer; 
InBlock.gif            
if(((DataRowView)container.DataItem)[this.Str].ToString()=="")
InBlock.gif                l.Text
=@"&nbsp;";
InBlock.gif            
else
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                l.Text 
=this.p.Server.HtmlEncode(((DataRowView)container.DataItem)[this.Str].ToString());//绑定字段
ExpandedSubBlockEnd.gif
            }

ExpandedSubBlockEnd.gif        }
 
ExpandedSubBlockEnd.gif    }
 
ExpandedBlockEnd.gif}

None.gif
动态的datagrid类

转载于:https://www.cnblogs.com/oflying907/archive/2006/04/18/377824.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值