上次《C# Datalist 多列及Image中图片路径的绑定》提到过公司的三放心评选活动的海选,每个用户打开页面的时候,待评选的人员都是随机排序的,因为当时没有用Ajax的技术,用的还是老Webform页面刷新,所以每次用户提交投票以后,页面上的待评选人员都会重新随机排序。昨天再次搞第2季度的评选,我也懒得修改为Ajax的交互式设计,只是针对这个页面进行了随机排序的优化:每个用户登录后第一次打开页面是随机排序,后面再次打开(刷新)页面都保持第一次的排序。因为我没有使用数据查询语句的动态排序,而是在读取数据库后,DataTable动态增加了一列RowId,然后随机生成GUID,根据此列动态的排序,所以这里需要保存RowId的数据到Cache。
代码如下,仅供参考。这个代码比一般的只是Cache完整的DataTable要复杂些。
// 动态增加随机排序编号 dt.Columns.Add(“RowId”, Type.GetType(“System.String”)); string rowId = string.Empty; if (Cache[cacheName] != null) { // Create DataTable From Cache DataTable dtRowId = (DataTable)Cache[cacheName]; for (int i = 0; i < dt.Rows.Count; i++) { rowId = dtRowId.Rows[i][“RowId”].ToString(); dt.Rows[i][dt.Columns.Count – 1] = rowId; } } else { // Create DataTable From DataBase DataTable dtRowId = new DataTable(); dtRowId.Columns.Add(“RowId”, Type.GetType(“System.String”)); for (int i = 0; i < dt.Rows.Count; i++) { rowId = Guid.NewGuid().ToString(); dt.Rows[i][dt.Columns.Count – 1] = rowId; // 保存到缓存表 DataRow drRowId = dtRowId.NewRow(); drRowId[“RowId”] = rowId; dtRowId.Rows.Add(drRowId); } // Push DataTable To Cache Cache[cacheName] = dtRowId; }
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有