首页
知识
文库
登录
|
注册
首页
最近更新
所有主题
我的主题
我的收藏
首页
·
知识
·
云计算
asp.net2.0里的DataGridView的列动态排序
佚名
本站原创
综合
编辑:
dezai
图片来源:网络
//这个方法就是用来调整列顺序的具体方法,里面还包含了一个操作列,是TemplateField&nb
//这个方法就是用来调整列顺序的具体方法,里面还包含了一个操作列,是TemplateField
private void AdjustGridViewColumns()
{
//if (Page.IsPostBack) return;
PersonSettingController psc = new PersonSettingController();
CountrySettingController csc = new CountrySettingController();
List
psis = psc.GetByClubId(Common.CurrentClubId);
PersonSettingInfo psi = new PersonSettingInfo();
if (psis.Count != 0)
psi = psis[0];
CountrySettingInfo csi = new CountrySettingInfo();
if (psi.DefaultCountry.HasValue)
{
List
settings = csc.GetByCountryId(Common.CurrentClubId, psi.DefaultCountry.Value);
if (settings.Count > 0)
csi = settings[0];
}
//country column visible or not
this.GridView1.Columns[10].Visible = psi.UseMoreCountries;
//if (csi == null) return;
//if (csi.HouseNumberAfterStreet) return; //this is default;
DataControlFieldCollection cols = this.GridView1.Columns.CloneFields();
this.GridView1.Columns.Clear();
TemplateField tf = cols[1] as TemplateField;
//CommandTemplate 是自己写的一个小类,里面会有两个图形按钮。
CommandTemplate ct = new CommandTemplate("command");
ct.CommandArgumentField = "PersonId";
tf.ItemTemplate = ct;
//下面开始为动态排序
for (int i = 0; i < 7; i++)
this.GridView1.Columns.Add(cols[i]);
if (!csi.HouseNumberAfterStreet)
{
//houseNr.
this.GridView1.Columns.Add(cols[8]);
//street
this.GridView1.Columns.Add(cols[7]);
}
else
{
//houseNr.
this.GridView1.Columns.Add(cols[7]);
//street
this.GridView1.Columns.Add(cols[8]);
}
if (csi.ZipCodeAfterCity)
{
//city
this.GridView1.Columns.Add(cols[10]);
//zipcode
this.GridView1.Columns.Add(cols[9]);
}
else
{
//city
this.GridView1.Columns.Add(cols[9]);
//zipcode
this.GridView1.Columns.Add(cols[10]);
}
this.GridView1.Columns.Add(cols[11]);
cols.Clear();
//设置一个变量说明已经排序过
this.ColumnsAdjusted = true;
}
//使用ViewState来储存是否已经排过序
private bool ColumnsAdjusted
{
get
{
object b = ViewState["ColumnsAdjusted"];
return (b == null) ? false : true;
}
set
{
ViewState["ColumnsAdjusted"] = value;
}
}
//这里是重要的,在LoadViewState的时候如果检测到已经排过序,则再重新排序一下。
protected override void LoadViewState(object savedState)
{
base.LoadViewState(savedState);
if (ColumnsAdjusted)
{
this.AdjustGridViewColumns();
}
}
//如果不是Postback则在第一次加载的时候排序
protected void Page_Load(System.Object sender, System.EventArgs e)
{
if (!ColumnsAdjusted)
{
this.AdjustGridViewColumns();
}
}
//按道理这里应该不使用的,可是事实上只有这样才能够使用模板列继续存在, 而且能引发事件
protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if (Page.IsPostBack)
{
CommandTemplate ct = new CommandTemplate("");
ct.InstantiateIn(e.Row.Cells[1]);
}
}
}
//CommandTemplate类,继承于ITemplate
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
namespace XCESS.XM
{
public class CommandTemplate : ITemplate
{
private string colname;
public CommandTemplate(string colname)
{
this.colname = colname;
}
private string commandargumentfield;
public string CommandArgumentField
{
get { return commandargumentfield; }
set { commandargumentfield = value; }
}
private string commandargument;
public string CommandArgument
{
get { return commandargument; }
set { commandargument = value; }
}
private bool includeView = true;
public bool IncludeView
{
get { return includeView; }
set { includeView = value; }
}
private bool includeEdit = true;
public bool IncludeEdit
{
get { return includeEdit; }
set { includeEdit = value; }
}
public void InstantiateIn(Control container)
{
ImageButton btn1 = BuildButton(CommandButtonType.View);
ImageButton btn2 = BuildButton(CommandButtonType.Edit);
btn1.DataBinding+=new EventHandler(btn_DataBinding);
btn2.DataBinding += new EventHandler(btn_DataBinding);
btn1.ID = "imgView";
btn2.ID = "btnEdit";
container.Controls.Add(btn1);
container.Controls.Add(btn2);
}
public void btn_DataBinding(object sender, EventArgs e)
{
ImageButton btn = sender as ImageButton;
GridViewRow container = (GridViewRow)btn.NamingContainer;
if (!string.IsNullOrEmpty(commandargumentfield))
{
btn.CommandArgument = (DataBinder.Eval(container.DataItem, commandargumentfield) ?? "").ToString();
}
}
private ImageButton BuildButton(CommandButtonType commandButtonType)
{
ImageButton btn = new ImageButton();
if (commandButtonType == CommandButtonType.View)
{
btn.CommandName = "Select";
btn.ImageUrl = "~/images/view.gif";
}
else
{
btn.CommandName = "EditDetail";
btn.ImageUrl = "~/images/edit.gif";
}
btn.CausesValidation = false;
if (!string.IsNullOrEmpty(commandargument))
btn.CommandArgument = commandargument;
return btn;
}
}
public enum CommandButtonType
{
Edit,
View,
}
}
本文作者:佚名 来源:本站原创
CIO之家 www.ciozj.com 微信公众号:imciow
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。
延伸阅读
看透SAAS企业好坏的16个关键指标
SaaS产品的五类核心指标
云业务成本的组成与管理趋势
也许感兴趣的
.
AGIC和软件生命周期:远不止是编码辅助
.
营销增长:如何从0到1设计并搭建你的会员体系?
.
制造企业MES功能架构及实施规划流程
.
如何做好私域运营
.
数据脱敏技术
.
数据中台建设的目标、流程及四大要点
.
数智时代,业财融合分析平台如何重新定义商业智能
我们推荐的
.
SaaS的关键指标有哪些
.
复杂的云原生体系建设
.
微服务架构设计总结实践
.
SaaS 市场体系搭建和企业营销全漏斗改造
.
SaaS企业如何应对疫情
.
中国SaaS发展史:一半是火焰,一半是海水
.
如何定义一家成熟的SaaS公司?
.
这些核心指标影响SaaS公司估值
主题最新
.
一文搞懂微服务架构演进
.
一文详解微服务架构
.
迄今为止最完整的DDD实践
.
全链路压测自动化实践
.
多维度规划业务架构
.
企业架构之业务架构
.
需求管理完整指南
.
软件安全设计原则
.
应用部署初探:微服务的3大部署模式
看看其它的
.
linux修改系统时间详解
.
linux与win分区格式
.
vmwareforlinux使用经典问答
.
VMware虚拟机上安装Linux系统
.
Linux操作系统安装VMware
.
解决WinXP重装后原文件夹拒绝访问
.
修复受损DVD光盘
.
笔记本移动CPU和显卡型号
收藏至微信