AspxGridView学习日记--动态添加超链接列

来源:互联网 发布:spine动画导入unity3d 编辑:程序博客网 时间:2024/05/01 12:43

因为刚使用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 ("<a href="3">Edit</a> ")

    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

}

原创粉丝点击