因为刚使用Developer Express .NET 不是很熟悉AspxGridView控件,组长要动态混合生成普通列&超链接列 困扰了我好长时间的问题今天终于解决了 一边看着金山词霸,一边看着国外的网页很吃力不过解决问题的时候很爽。一边想办法一边自己解决 下面是解决方法 希望大家指教
ASPxGridView1.BeginUpdate();
ASPxGridView1.Columns.Clear();//清空列
ASPxGridView1.AutoGenerateColumns = true;
ASPxGridView1.DataSourceID = ObjectDataSource2.ID;//获得数据源
ASPxGridView1.DataBind(); //绑定数据
ASPxGridView1.Columns["nodeid"].Visible = false;//nodeid列不显示
int columnCount = ASPxGridView1.Columns.Count;//获取列的数量
ArrayList columnList = new ArrayList(); //生成超链接列的集合
ArrayList columnList1 = new ArrayList();//生成普通列的集合
for (int i = 2; i < columnCount-1; i++)//循环转换超链接列
{
GridViewDataHyperLinkColumn resultCol = new GridViewDataHyperLinkColumn(); //NEW ige超链接列
resultCol.Caption = ((GridViewEditDataColumn)ASPxGridView1.Columns[i]).FieldName; //列标题
resultCol.FieldName = ((GridViewEditDataColumn)ASPxGridView1.Columns[i]).FieldName;
object[] args = new object[]
{ ((GridViewEditDataColumn)ASPxGridView1.Columns[i]).FieldName,DropDownList1.SelectedIndex }; //resultCol.PropertiesHyperLinkEdit.NullDisplayText = "1123";
resultCol.PropertiesHyperLinkEdit.NavigateUrlFormatString = string.Format("javascript:OnClick=OnMoreInfoClick(this,'{0}',{1})",args);//生成超链接
columnList.Add(resultCol);//添加到集合内
} //保存 普通列
columnList1.Add(ASPxGridView1.Columns[1]);
columnList1.Add(ASPxGridView1.Columns[ASPxGridView1.Columns.Count - 1]);
ASPxGridView1.AutoGenerateColumns = false;
//for (int x = columnCount - 1; x > 1; x--)
//{
// ASPxGridView1.Columns.Remove(ASPxGridView1.Columns[x]);
//} //清空所有列
ASPxGridView1.Columns.Clear(); //添加 关别列
ASPxGridView1.Columns.Add((GridViewColumn)columnList1[0]); //添加 超链接列
for (int j = 0; j < columnList.Count; j++)
{ ASPxGridView1.Columns.Add((GridViewDataHyperLinkColumn)columnList[j]); }
//ASPxGridView1.EndUpdate();
//ASPxGridView1.BeginUpdate(); //添加 汇总列
ASPxGridView1.Columns.Add((GridViewEditDataColumn)columnList1[1]);
//ASPxGridView1.DataBind();
ASPxGridView1.EndUpdate();
}
有一个问题 不知道为什么 混合生成列的时候 普通的文本列总是全部到前面去 而超链接列总是到后面 如果有知道的请回复在下感激不尽
PS 下面的是DX官方给的解决方案
protected void ASPxGridView1_Init(Object sender, EventArgs e)
{
GridViewDataHyperLinkColumn colLink = new GridViewDataHyperLinkColumn();
colLink.Caption = "Edition";
colLink.FieldName = "Id"; //Column parameter, "Id" is URL link ("Edit ")
colLink.PropertiesHyperLinkEdit.Text = "Edit"; // Display text
colLink.PropertiesHyperLinkEdit.TextField = "Content"; //Display content of column "Content", alternative to PropertiesHyperLinkEdit.Text
colLink.PropertiesHyperLinkEdit.ImageUrl = "~/images/edit.gif"; //Display image, alternative to PropertiesHyperLinkEdit.Text
colLink.PropertiesHyperLinkEdit.NavigateUrlFormatString = "/Default.aspx?={0}"); //The URL is replaced {0} to "Id" to especific Row ("/Default.aspx?=3")
colLink.Visible = true;
colLink.Width = 50;
ASPxGridView1.Columns.Add(colLink); //Add column to ASPxGrid
}