AspxGridView与GridView控件一样,都是操作大数据量的列表数据的控件。那么我们如何像GridView控件一样,为
AspxGridView控件添加一个序号列呢?就像下图一样:
有了序号列,用户可以快速定位自己想要的数据,对用户的体验度可加分不少哦。
一,首先为AspxGridView添加序号列
/// <summary>
/// 为AspxGridView添加序号列,附件数量列
/// </summary>
/// <param name="_grid"></param>
public void SetGridAddNumberCol(AspxGridView _grid)
{
if (_grid != null)
{
if (_grid.Columns["序号"] == null)
{
GridViewDataTextColumn col = new GridViewDataTextColumn();
col.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;
col.CellStyle.HorizontalAlign = HorizontalAlign.Center;
col.EditFormSettings.Visible = DevExpress.Web.ASPxClasses.DefaultBoolean.False;
col.Caption = "序号";
col.VisibleIndex = 0;
_grid.Columns.Add(col);
//这里主要是用来设置序号列的显示顺序,我们总是希望序号列显示在列表的最前面吧,但如果前面还有一个选择列的话,序号列就应该位于选择列的后面,也就是第二列。当然了,这段代码是可以根据情况来修改或者可以完全删除掉的。
bool isvisible;
if (_grid.Columns[0].GetType().Name != "GridViewCommandColumn")
{
for (int i = 0; i < _grid.Columns.Count; i++)
{
if (_grid.Columns[i].Caption == "序号")
_grid.Columns[i].VisibleIndex = 0;
else
{
isvisible = _grid.Columns[i].Visible;
_grid.Columns[i].VisibleIndex = _grid.Columns[i].VisibleIndex + 1;
_grid.Columns[i].Visible = isvisible;
}
}
}
}
}
二,添加后序后,还需要为该列赋值,当然了,这个就相当的简单了,我们只需要在AspxGridView的Grid_HtmlDataCellPrepared事件中为"序号"这个栏位赋值就好了,代码如下:
protected void Grid_HtmlDataCellPrepared(object sender, AspxGridViewTableDataCellEventArgs e)
{
if (IsCreateNumberCol && e.DataColumn.Caption == "序号")
{
e.Cell.Text = (e.VisibleIndex + 1).ToString();
}
}
如果你的数据源有使用了分页存储过程,而又想使用翻页后的序号是连续的,你可以改写填充序号的代码如下:
protected void Grid_HtmlDataCellPrepared(object sender, AspxGridViewTableDataCellEventArgs e)
{
if (IsCreateNumberCol && e.DataColumn.Caption == "序号")
{
e.Cell.Text = (e.VisibleIndex +(AspxGridViewID.PageIndex * AspxGridViewID.SettingsPager.PageSize) + 1).ToString();
}
}
注意:使用这个方法添加上的序号值,在使用DevExpress导出控件导出数据的时候是导不出来的。如果要想导出序号值,只有数据源中包含序号值才行。s