-
C#Winform程序的dataGridView让某行不参与排序
2019-12-12 21:54:02最近在做一个需求的时候,需要在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
没有积分的给我留言,留下邮箱,我私发。
-
element ui table 排序 指定行不参与排序
2020-12-16 10:25:29/* 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() // 清除排序 } },
-
中国电影:公司参与电影《李焕英》的出品、发行
2021-02-19 17:34:09 -
大股东参与下定向增发中的发行折价与利益输送
2020-02-11 21:55:33大股东参与下定向增发中的发行折价与利益输送,谢赤,徐琪,为了考察大股东参与背景下的定向增发折价现象和利益输送行为,并分析利益输送具体影响因素,本文构建了折价影响因素回归模型和利 -
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 钥匙扣》 成功参与抽奖:《桌面理线器》
现在所有奖品都变成已参与状态,坐等中奖吧。你还可以对代码进行改进。有人可能会问,这算不算作弊呢?我觉得这就是程序员的优势,我们只是用了不一样的工具来完成相同的事情,以后编程还真的是每个人都应该掌握的一项基本技能,没事写个代码解决繁琐的、重复的工作。懒惰是推动社会文明进步的原动力。
-
datagridview 某些行不参与排序
2013-05-13 17:10:01如何让datagridview的最顶端的两行不参与排序,就是点击了列头,只有其他行排序了,这两行不动呢,请大家指教! -
DevExpress GridView 排序状态下新增行不参与排序demo源码
2017-09-22 10:53:27GridView 排序状态下,如果不采用GridView自带的新增空白行的话,而是采用AddNewRow或者自己编写的方法,新增行因为单元格值为空,导致排序发生混乱, 如果想固定住新增行始终停留在最底部,就需要自定义排序,... -
DevExpress GridView 排序状态下新增行不参与排序
2019-07-19 12:07:52GridView 排序状态下,如果不采用GridView自带的新增空白行的话,而是采用AddNewRow或者自己编写的方法,新增行因为单元格值为空,导致排序发生混乱,如果想固定住新增行始终停留在最底部,解决方案有两种: ... -
10行Python代码实现抽奖助手自动参与抽奖
2020-10-16 19:09:47(免费给抽奖助手做个小广告),我在公众号多次用它来发过很多奖品,同时,我每天也会去参与一些抽奖,目前的中奖记录为0(尴尬脸) 很多人学习python,不知道从何学起。 很多人学习python,掌握了基本语法过后,不... -
厉害了,10行代码实现抽奖助手自动参与抽奖
2018-04-10 00:00:00(免费给抽奖助手做个小广告),我在公众号多次用它来发过很多奖品,同时,我每天也会去参与一些抽奖,目前的中奖记录为0(尴尬脸)在助手中参与抽奖你不需要支付一分钱,但是需要花时间,想抽奖就不得不每天打开小... -
el-table排序(部分行不参与)
2020-08-27 18:49:37//放置总计一行数据 tableData.map((item) => { if (item.name == "平均") { avgData = item; } if (item.name == "总计") { sumData = item; } }); if (sortingType == "ascending") { //正序 tableData = table... -
湖南省本级社会组织参与脱贫攻坚五个专项行动花垣之行
2020-09-27 10:55:139月24日,“省本级社会组织参与脱贫攻坚五个专项行动”之花垣行在花垣县民政局正式启动,省智慧教育装备展示体验中心、省守合同重信用企业协会、省电力工程企业协会、省广东商会、湖南信息学院等33家社会组织带着... -
用ES6代码实现table表格某一行不参与倒序的排序
2020-06-12 17:49:29用ES6代码实现IE可兼容的table表格某一行(合计)不参与倒序的排序 **`//对表格排序 function checkColumnValue(index, type,tableId) { var tableObject1 = $('#'+tableId); //获取id为simpleLineTable的table对象 ... -
SQL的计算列能否引用该列的上一行的计算结果参与当前行的计算?
2019-01-30 13:47:52计算移动加权平均价是(上期成本+本期成本)/...第一行计算出移动加权平均单价,把该结果*第一行的本期数量结存,参与到下一行的移动加权平均单价的计算中去? (不用存储过程,之前就是存储过程实现的,维护太麻烦) -
管理与技术之方法(接口)行参与返回请用实体类
2019-09-11 16:06:01前言 会用与灵活的用好之间是妙之巅豪,失之千里。小细节大管理与大效率,管理没有大小之分, 很小的...方法(借口)行参与返回只用实体类 说一个真实的故事 刚刚到一个新小组,在一次会议的时候。 鸟菜啊:以后所... -
ofo回应发币传闻:从未参与虚拟货币的发行 与GSE Lab合作已终止
2019-12-17 18:20:0912月17日消息,针对相关媒体报道ofo小黄车参与进入区块链行业一事,ofo官方发布声明称,从未参与虚拟货币的发行,ofo与GSE Lab之间仅为合作关系。随着2018年ofo海外业务缩... -
蔚来汽车拟发行6.5亿美元债券:腾讯高瓴将参与购买
2019-01-30 10:56:37雷帝网 乐天 1月30日报道蔚来汽车日前...蔚来汽车的股东腾讯控股、高瓴资本(Hillhouse Capital Management Ltd)将参与认购,预计将分别购买价值3000万美元和1000万美元的发行票据,购买条款与其他票据相同。本次发... -
tablesorter绑定排序时排除内部表,和某些行不参与排序
2010-12-15 16:20:20tablesort很强大,但是有时候也很不足,比如我想让某些行不参与排序只是跟着前一行移动,或者我table里面有inner table的时候,绑定外层表的时候总会影响到内部的表。其实要让他实现这些很简单, step1,让表中的... -
DataGrid 的 自定义排序,合计行不参与排序
2011-05-17 10:45:00基本思路是排序前删除合计行,排序后吧删除的添加上去 int flag = 0; void dataGrid1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { var list = GetDataSource(); list.... -
java 类方法返回接口,管理与技术之方法(接口)行参与返回请用实体类
2021-03-26 14:37:13方法(借口)行参与返回只用实体类说一个真实的故事刚刚到一个新小组,在一次会议的时候。鸟菜啊:以后所有的方法(接口)行参与返回只用实体类老员工A说:这不是增加了很多工作量吗?新员工B说:是啊,很麻烦啊。鸟菜啊... -
视频也能参与排名,原来这么优化就行了
2016-06-03 15:45:04当然如果一个视频的评分不是太高,对用户来说会产生一定的抵触影响,点击播放的人肯定会大大减少,所以视频站点一定要和用户产生互动才行。 3、给视频添加了什么标签 为了更好地区分视频种类,一般网站... -
工行高级经理林承军:工行基于 MySQL 构建分布式架构的转型之路
2020-09-02 08:00:00中生代技术链接技术大咖,分享技术干货全文:7200字本文作者:林承军,中国工商银行软件开发中心高级经理,有用多年开放平台相关技术研究及实施经验,多次参与工行重点项目的原型技术研究、IT ... -
出口商贸易融资工具:贸易项下风险参与
2017-11-07 15:57:11出口商贸易融资工具:贸易项下风险参与 贸易项下风险参与业务指在国际贸易结算业务中,采取信用证结算方式下议付行或者保兑行,福费廷业务中包买商,保函业务中的受益行,为降低业务风险,...(2)风险参与行参与金额 -
刚刚!10万+程序员参与,行,这个1024彻底玩大了!
2019-10-24 22:00:00声明 CSDN【原创博客】,在提交博客页面勾选【加入原力计划】即可参与; CSDN 将从参加“原力计划”的博文中,挑选优质博文进行推荐; 参与活动的文章必须是原创首发 CSDN 平台。 评选规则: 当月声明【原创首发】的... -
中国央行数字货币或比Libra更早发行,考虑让非政府机构参与试点
2019-08-21 21:31:59中国官员和专家们表示,中国正在测试推出中国首款央行数字货币(CBDC)的多种方式,他们预计私营机构将更多地参与创造政府支持的货币。 基于一些领域正在进行的试验,引入 CBDC 的时机已经接近成熟。但与中国央行...