精华内容
下载资源
问答
  • /* element ui table 排序 指定参与排序,比如“总体”,一直保持在第一 */ // 添加:ref="experienceInfoTable" 和 :row-class-name="tableRowClassName" <el-table border height="500" ref=...
    /* element ui table 排序 指定行不参与排序,比如“总体”,一直保持在第一行 */
    
    // 添加:ref="experienceInfoTable" 和 :row-class-name="tableRowClassName"
    <el-table border
        height="500"
        ref="experienceInfoTable"
        :data="experienceInfoList"
        :default-sort="{prop: 'total', order: 'descending'}"
        @sort-change="changeTableSort"
        :header-cell-style="{ background: '#eceefd' }"
        :row-class-name="tableRowClassName">
    
    // 需要排序的列 添加 sortable='custom'
    <el-table-column label="Excellent"
         align="center"
         prop="excellent"
         sortable='custom' />        
    
    // 方法
    changeTableSort (column) {
      const orderGroup = []
      const fieldName = column.prop
      const sortingType = column.order
      this.experienceInfoList.map(item => {
        orderGroup.push(item)
      })
      // 降序排序
      if (sortingType == 'descending') {
        this.experienceInfoList = orderGroup.sort((a, b) => {
          let aVal = a[fieldName]
          let bVal = b[fieldName]
    
          // 令中心总体所在行指标值最大
          if (a.userName == '总体') {
            aVal = 99999999
          }
          if (b.userName == '总体') {
            bVal = 99999999
          }
          return bVal - aVal
        })
      } else if (sortingType == 'ascending') {
        // 升序排序
        this.experienceInfoList = orderGroup.sort((a, b) => {
          let aVal = a[fieldName]
          let bVal = b[fieldName]
          if (a.userName == '总体') {
            aVal = -2
          }
          if (b.userName == '总体') {
            bVal = -2
          }
          return aVal - bVal
        })
      } else {
        this.$refs.experienceInfoTable.clearSort() // 清除排序
      }
    },
    
    展开全文
  • 最近在做一个需求的时候,需要在dataGridView的最后两添加一个平均值、总计的,这两不能参与排序的。现在的dataGridView其实默认最后一不参加排序的,但是现在我是最后两参与排序,因此需要自己动手解决...

            最近在做一个需求的时候,需要在dataGridView的最后两行添加一个平均值、总计的行,这两行不能参与排序的。现在的dataGridView其实默认最后一行不参加排序的,但是现在我是最后两行不参与排序,因此需要自己动手解决。类似的,以下解决方案可以让任意一行不参与排序。

            首先建立一个winform程序,放入控件dataGridView,然后建立四个列,这里需要将排序设置为NotSorttable,如图所示:

            这里主要的原理是这样:刚开始加载的时候,先将需要排序的数据加载到dataGridView中,排序主要靠代码实现,不再试直接修改属性实现。因此需要一个一个排序的标志,sortSign,让其true时进行正序排列,false时进行倒序排列。然后加载完排序的数据,再加载不需要进行排序的数据,并进行相关的计算。点击列头,触发DataGridView1_ColumnHeaderMouseClick事件,然后获取到列的序号,根据列的序号对某一列进行排序。代码实现如下:

    namespace WinfromSortTest
    {
    	public partial class Form1 : Form
    	{
    		//排序标志
    		private bool sortSign = true;
    		//列序号
    		private int columnIndex = 0;
    
    		public Form1()
    		{
    			InitializeComponent();
    		}
    
    		private void Form1_Load(object sender, EventArgs e)
    		{
    			
    			ShowData();
    		}
    		/// <summary>
    		/// 给dataGridView添加初始的数据
    		/// </summary>
    		private void ShowData()
    		{
    			this.dataGridView1.RowCount = 5;
    			for (int i = 0;i < 4;i++)
    			{
    				this.dataGridView1.Rows[i].Cells["Column1"].Value = i;
    				this.dataGridView1.Rows[i].Cells["Column2"].Value = i+1;
    				this.dataGridView1.Rows[i].Cells["Column3"].Value = i+2;
    				this.dataGridView1.Rows[i].Cells["Column4"].Value = i+3;
    			}
    			//排序
    			if(sortSign)
    			{
    				this.dataGridView1.Sort(dataGridView1.Columns[columnIndex], ListSortDirection.Ascending);
    
    			}
    			else
    			{
    				this.dataGridView1.Sort(dataGridView1.Columns[columnIndex], ListSortDirection.Descending);
    			}
    			//排序完成后进行平均值和合计两行数据的添加,这样,其就不会进行排序了
    			SumAndAvg();
    		}
    		/// <summary>
    		/// 点击列标题触发的事件
    		/// </summary>
    		/// <param name="sender"></param>
    		/// <param name="e"></param>
    		private void DataGridView1_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
    		{
    			sortSign = !sortSign;
    			columnIndex = int.Parse(e.ColumnIndex.ToString());
    			ShowData();
    			this.dataGridView1.ClearSelection();
    		}
    
    		/// <summary>
    		/// 平均值和合计两列数据的添加
    		/// </summary>
    		private void SumAndAvg()
    		{
    			this.dataGridView1.RowCount = 6;
    
    			this.dataGridView1.Rows[5].Cells["Column1"].Value = "合计";
    
    			double column2Sum = 0;
    			double column3Sum = 0;
    			double column4Sum = 0;
    
    			for(int i = 0;i < 4; i++)
    			{
    				column2Sum += double.Parse(this.dataGridView1.Rows[i].Cells["Column2"].Value.ToString());
    				column3Sum += double.Parse(this.dataGridView1.Rows[i].Cells["Column3"].Value.ToString());
    				column4Sum += double.Parse(this.dataGridView1.Rows[i].Cells["Column4"].Value.ToString());
    			}
    
    			this.dataGridView1.Rows[5].Cells["Column2"].Value = column2Sum;
    			this.dataGridView1.Rows[5].Cells["Column3"].Value = column3Sum;
    			this.dataGridView1.Rows[5].Cells["Column4"].Value = column4Sum;
    
    			this.dataGridView1.Rows[4].Cells["Column1"].Value = "平均值";
    
    			this.dataGridView1.Rows[4].Cells["Column2"].Value = Math.Round(column2Sum / 4,2,MidpointRounding.AwayFromZero);
    			this.dataGridView1.Rows[4].Cells["Column3"].Value = Math.Round(column3Sum / 4, 2, MidpointRounding.AwayFromZero);
    			this.dataGridView1.Rows[4].Cells["Column4"].Value = Math.Round(column4Sum / 4, 2, MidpointRounding.AwayFromZero);
    		}
    	}
    }
    

            以下是运行结果,点击列头进行排序:

           下载资源链接:https://download.csdn.net/download/qq_41061437/12029527

            没有积分的给我留言,留下邮箱,我私发。

    展开全文
  • 10代码实现抽奖助手自动参与抽奖

    千次阅读 2018-04-10 20:32:37
    (免费给抽奖助手做个小广告),我在公众号多次用它来发过很多奖品,同时,我每天也会去参与一些抽奖,目前的中奖记录为0(尴尬脸)在助手中参与抽奖你不需要支付一分钱,但是需要花时间,想抽奖就不得不每天打开小...

    不知道大家用过抽奖助手小程序没?(免费给抽奖助手做个小广告),我在公众号多次用它来发过很多奖品,同时,我每天也会去参与一些抽奖,目前的中奖记录为0(尴尬脸)


    在助手中参与抽奖你不需要支付一分钱,但是需要花时间,想抽奖就不得不每天打开小程序逐个点击参与才能参与,每天重复的操作觉得好繁琐,于是我萌生出一个想法,用程序去自动参与抽奖。

    说干就干,熟悉爬虫基本原理的大概能猜出来怎么做。我们之前写过基于Python爬微信公众号爬虫的系列教程,现在假设你已经会用 Fiddler 去代理 HTTP 请求。怎么安装 Fiddler 和配置手机端这里不再介绍,自行百度。


    配置好 Fiddler 之后,手机打开小程序 “抽奖助手” 之后,有个公共抽奖列表


    通过 Fiddler 抓包,我们看到抽奖列表的请求地址是:/public_lottery?page=1&size=5, 请求方法是 GET,还有一个 Header 字段 Authorization,返回的数据结构可以清晰看到总共返回了5条数据,代表5个奖品,每个字段基本能猜出来什么意思。



    我们再来手动选择一个活动点击参与抽奖,看背后它是怎么向服务器发送请求的,弄清楚了原理之后就可以用程序来自动模拟请求。


    参与抽奖的请求有几个注意的地方,请求使用的是 POST 方法,URL地址是:/lottery/67c3a5afe794dc7bdbed85a38a18bb44/join ,和抽奖列表一样,还有一个请求 Header 是 Authorization,它的值就是后面一串很长的 Bearer 开头的字符串… 。

    现在我们就可以用 Python 来构建一个自动参与抽奖的脚本,每隔一段时间就去自动刷,发现有新的奖品,就自动参与抽奖。

    源代码

    # coding=utf-8

    import requests

    def main():
       url = "https://lucky.nocode.com/public_lottery?page=1&size=5"
       # 替换成你自己的Authorization
       headers = {
           "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXV...."}
       res = requests.get(url, headers=headers)
       lotteries = res.json().get("data")
       join_url = "https://lucky.nocode.com/lottery/{id}/join"
       for lottery in lotteries:
           res = requests.post(join_url.format(id=lottery.get("id")), headers=headers)
           data = res.json()
           if res.status_code == 200 and 'errors' not in data:
               print("成功参与抽奖:《%s》" % lottery.get("prizes").get("data")[0].get("name"))

    if __name__ == '__main__':
       main()

    运行

    成功参与抽奖:《阿玛尼红管唇釉》
    成功参与抽奖:《Havaianas 人字拖》
    成功参与抽奖:《《不要成为无聊的大人》》
    成功参与抽奖:《Satan 钥匙扣》
    成功参与抽奖:《桌面理线器》



    现在所有奖品都变成已参与状态,坐等中奖吧。你还可以对代码进行改进。


    有人可能会问,这算不算作弊呢?我觉得这就是程序员的优势,我们只是用了不一样的工具来完成相同的事情,以后编程还真的是每个人都应该掌握的一项基本技能,没事写个代码解决繁琐的、重复的工作。懒惰是推动社会文明进步的原动力。

    展开全文
  • GridView 排序状态下,如果不采用GridView自带的新增空白的话,而是采用AddNewRow或者自己编写的方法,新增因为单元格值为空,导致排序发生混乱,如果想固定住新增始终停留在最底部,解决方案有两种: ...

    GridView 排序状态下,如果不采用GridView自带的新增空白行的话,而是采用AddNewRow或者自己编写的方法,新增行因为单元格值为空,导致排序发生混乱,如果想固定住新增行始终停留在最底部,解决方案有两种:
    1、利用devexpress提供一个ImmediateUpdateRowPosition属性,可以在维护的时候不排序,不分组,不过滤等。(一开始发这贴的时候没注意到,后面有人提出来了,才恍然大悟,感谢这位兄台,当然,下面的自定义排序的方式也可以作为参考);

    gridView1.OptionsBehavior.ImmediateUpdateRowPosition = false;

    2、自定义排序,GridView提供了CustomColumnSort的事件进行自定义排序规则

    private void Form1_Load(object sender, EventArgs e)
            {
                var dt = new DataTable();
                for (int i = 0; i < 3; i++)
                    dt.Columns.Add("Column" + i.ToString());
                for (int i = 0; i < 4; i++)
                    dt.Rows.Add(new object[] { "Item" + i.ToString(), i, 3 - i });
                gridControl1.DataSource = dt;
                foreach (GridColumn col in gridView1.VisibleColumns)
                {
                    col.SortMode = DevExpress.XtraGrid.ColumnSortMode.Custom;//排序设置为自定义排序,否则不会触发CustomColumnSort事件
                }
                gridView1.VisibleColumns[0].SortOrder = DevExpress.Data.ColumnSortOrder.Ascending;
            }
    private void gridView1_CustomColumnSort(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnSortEventArgs e)
    {           //此处取第一列作为判断依据,可以根据情况设置其他判断依据,比如ID值之类的,原理一样,目的就是让新增的行始终排在最下面。
        var value1 = (e.RowObject1 as DataRowView)["Column0"].ToString();
        var value2 = (e.RowObject2 as DataRowView)["Column0"].ToString();
        if (value1 == "" && value2 != "")
        {
            if (e.SortOrder == DevExpress.Data.ColumnSortOrder.Ascending)
                e.Result = 1;
            if (e.SortOrder == DevExpress.Data.ColumnSortOrder.Descending)
                e.Result = -1;
            e.Handled = true;
     
        }
        if (value1 != "" && value2 == "")
        {
            if (e.SortOrder == DevExpress.Data.ColumnSortOrder.Ascending)
                e.Result = -1;
            if (e.SortOrder == DevExpress.Data.ColumnSortOrder.Descending)
                e.Result = 1;
            e.Handled = true;
     
        }
        if (value1 == "" && value2 == "")
        {
            if (e.SortOrder == DevExpress.Data.ColumnSortOrder.Ascending)
                if (e.ListSourceRowIndex1 > e.ListSourceRowIndex2)
                    e.Result = 1;
                else
                    e.Result = -1;
            if (e.SortOrder == DevExpress.Data.ColumnSortOrder.Descending)
                if (e.ListSourceRowIndex1 > e.ListSourceRowIndex2)
                    e.Result = -1;
                else
                    e.Result = 1;
     
            e.Handled = true;
     
        }
    }

    demo 源码下载:

    http://download.csdn.net/download/u012097590/9990082

    效果图:

    展开全文
  • PTA46题(Java基础练习)

    万次阅读 多人点赞 2019-10-03 20:40:59
    输入一个字符串代表一个大整数,连续输入若干,当某字符为e或E时退出。 输入样例: 42846280183517070527831839425882145521227251250327 55121603546981200581762165212827652751691296897789 e ...
  • 实现了 规则排序,主要是合计项不参与排序(主要利用了保存合计项在移出在添加)
  • 情人节来了,教你个用 Python 表白的技巧

    万次阅读 多人点赞 2020-02-12 21:47:54
    虽然创意和使用效果都不错,但有一缺点,这是那个exe文件,女神需要打开电脑,才有可能参与进来,进而被你成功"调戏”。 由于是很早期的文章了,应该有很多人没有看过。 没有看过的,你可以点击这里查看:用Pyt...
  • (免费给抽奖助手做个小广告),我在公众号多次用它来发过很多奖品,同时,我每天也会去参与一些抽奖,目前的中奖记录为0(尴尬脸)在助手中参与抽奖你不需要支付一分钱,但是需要花时间,想抽奖就不得不每天打开小...
  • 历久而新,我的新书《第二代码》已出版!

    万次阅读 多人点赞 2016-11-23 09:49:08
    《第二代码》中的内容我相信很多人都会非常感兴趣,因为里面确实加入了很多很新的知识。略粗概括一下的话,新增内容就包括有Android Studio、Gradle、Material Design、运行时权限、多窗口模式、RecyclerView、...
  • 如何使用matlab实现分段函数

    万次阅读 多人点赞 2018-10-09 20:39:13
    # 当只有一个输出参数时,返回一个向量,该行向量的第一个元素是矩阵的行数,第二个元素是矩阵的列数; ans = 1 401 B = zeros ( n ) # 生成n×n全零阵; B = zeros ( m , n ) # 生成m×n全零阵;...
  • el-table排序使某些数据不参与排序

    千次阅读 2020-04-16 10:29:10
    排序前端也经常做,以前都做的是很简单排序,所有的数据参与排序,直接用插件封装的就,但是这次是一些数据不参与排序所以这时候就需要进行自定义的设置 思路:首先分成两个数组,一个数组的数据参与排序另一组...
  • 遗传算法原理及算法实例

    万次阅读 多人点赞 2017-11-26 09:42:19
    % 精英不参与变异,从2开始 number_of_elements = (population_size - 1) * number_of_variables; % 全部基因数目 number_of_mutations = ceil(number_of_elements * mutation_rate); % 变异的基因数目(基因...
  • 计算机组成原理期末复习【超实用】

    万次阅读 多人点赞 2019-08-14 00:07:42
    分散刷新:是指对每存储单元的刷新分散到每个存储周期内完成。 异步刷新:是前两种方式的结合,既可缩短“死时间”,又充分利用最大刷新间隔2ms的特点。 3. 说明计算机九大寻址方式及有效地址EA计算方法。P311 ...
  • tablesort很强大,但是有时候也很不足,比如我想让某些参与排序只是跟着前一移动,或者我table里面有inner table的时候,绑定外层表的时候总会影响到内部的表。其实要让他实现这些很简单, step1,让表中的...
  •   基本思路是排序前删除合计,排序后吧删除的添加上去 int flag = 0; void dataGrid1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { var list = GetDataSource(); list....
  • 来源:互链脉搏法定数字货币一直属于央行内部的保密项目,其参与方的身份更是神秘。而12月24日,几则消息的公布,使得央行数字货币参与方的轮廓愈加清晰。当天,腾讯内部发布了《关于成立数字货币...
  • MATLAB Simulink模块库详解(一)Sources篇

    万次阅读 多人点赞 2018-07-16 09:41:56
    文件名必须包含一个两或两以上的矩阵,第一应是单调递增的时间点,其它是与之对应的数据点 模块数据类型 双精度类型实数信号 模块参数对话框 File name:输入数据的文件名 Sample time:从文件中读去数据的...
  • excel筛选时保留下面某些不被筛选

    万次阅读 2021-05-06 11:33:51
    如图:筛选第一时 下面表格也会一起筛选不是我们想要的 保留下方不被筛选 需要在下方表格插入一空行 然后取消取消筛选,重新筛选即可 达到我们要的效果
  • Matlab 矩阵运算

    千次阅读 2014-09-11 10:52:20
    、矩阵的之间用” ; ”(或回车符)隔开; d 、矩阵的元素可以是数值、变量、表达式或函数; e 、矩阵的尺寸不必预先定义。 下面介绍四种矩阵的创建方法: 1 、直接输入法 最简单...
  • 用python实现一输入n个数实例

    万次阅读 2018-06-22 18:39:47
    1039: n个数求和 时间限制: 1 Sec内存限制: 30 MB 提交: 14528解决: 9833 ...输入有两:第一是一个正整数n,第二是n个整数。 输出 输出一个整数,即n个数的和。输出单独占一。 样例输入 3 7 3 2...
  • 随着 2019 的过去,2020 迎来了...纸上得来总觉浅,就像《剑来》中说的一样:君子坐而论道,少年起而之。 愿诸位未来不会十年如一日,在面对世间万般讲理与不讲理时,终能找到属于自己的落处,心安处即汝乡。
  • 如何参与到开源项目中去

    千次阅读 2016-09-23 10:19:02
    编者:开源项目是程序员学习的一个途径,面对那些发展多年的代码,我们到底该如何才能参与其中?  如果你想参与到开源项目中去,却又不知道从何入手,这里提供一些参考方法或许能给你提供一些帮助,哪怕你对你目前...
  • 各业都将物联网视为破桎梏,迎创新的一把利器 物联网是新一代信息技术的高度集成和综合运用,全球各国尤其是发达国家对发展物联网均加以高度重视,并积极进行战略布局,以期把握未来国际经济与科技的竞争主动权...
  • 现在想象下在同一个协议中,参与度目标设置为50%,且一个团队正试图创造这样一个实例,即我们已经看到约3%不诚实节点扮演着重要角色,且有充足的代币流动性以支持多种用途,所以将参与度提升到60%将减少破坏网络效率...
  • 我的新书,《第一代码 Android 第3版》已出版!

    万次阅读 多人点赞 2020-04-02 10:13:08
    《第一代码——Android》这本书自2014年出版以来,已经过了6个年头了。期间Android系统版本经历了4.0到10.0系统的巨大升级,开发技术也发生了翻天覆地的变化。在2016年的时候,我曾对书中的内容进行了大幅度的更新...
  • 银联的跨清算体系架构分析

    万次阅读 多人点赞 2016-07-27 18:39:18
    目前实现跨清算的系统主要有银联跨清算系统、第三方支付系统、人行的网上支付跨清算系统(超级网银),本文主要介绍银联的跨清算系统。跨清算业务与清算对象首先从业务上讲,银联的支付清算包括清分和资金...
  • 当你入较深的时候,根据需要配一台好的电脑也是非常必要的。 **那么:** **1、你觉得写代码需要一台什么配置的电脑?** **2、你现在用的是什么配置?哪些方面让你用着不爽?** **3、程序员需要懂得修...
  • 需要实体类添加其他的参数,但是又不想其参与数据库查询,怎么办? 方法:@TableField(exist = false) 添加注解, (注意:这里使用的是Mybatis-plus) /** * 部门名称 不参与数据库查询, * 目的是为了在...
  • 备注,图中“中央银行支付清算系统”部分是一代的,二代增加了网上支付跨清算系统(超级网银)。从这张图可以看出来:CNAPS 2代(中国现代化支付系统二代)主要包括:a、中央银行支付清算系统:大额实时支付系统、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 315,975
精华内容 126,390
关键字:

参与行