關於ExtAspNet的Grid的動態增加列的方法

來源:互聯網
上載者:User

動態列 ExtAspNet.BoundField  只能在Page_Init和Page_Load等方法中增加,而在有些地方,比如點擊按鈕後動態增加,就無法生效。
有個情境:查詢時,使用者選擇需要的欄位來顯示,就涉及到動態列。
方法一:規避解決,查詢結果直接彈出個頁面,沒有問題。

方法二:

(1) 在Page_Load方法中增加若干個隱藏列

for (int i = 0; i < QUERY_GRIDVIEW_COLUMN_COUNT; i++)            {                ExtAspNet.BoundField boundField = new ExtAspNet.BoundField();                boundField.HeaderText = string.Format("第{0}列", i + 1);                boundField.Hidden = true;                gridQueryResult.Columns.Add(boundField);            }

(2) 在查詢過程中設定繫結資料行對於的欄位

/* 獲得查詢結果 */

DataSet ds = ....

foreach (DataColumn dataColumn in ds.Tables[0].Columns)                {                    if (dataKeyNames.Contains(dataColumn.ColumnName))                    {                        continue;                    }                    ExtAspNet.BoundField boundField = (ExtAspNet.BoundField)gridQueryResult.Columns[index];                    if (!dataKeyNames.Contains(dataColumn.ColumnName))                    {                        boundField.Hidden = false;                    }                    boundField.DataTooltipField = dataColumn.ColumnName;                                        boundField.DataField = dataColumn.ColumnName;                                        //boundField.HeaderText = dataColumn.Caption;                    index++;}

注意,這裡直接設定繫結資料行 HeaderText 無法生效。


(3)在查詢後重新設定標題列

/// <summary>        /// 查詢        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        protected void btnQuery_Click(object sender, EventArgs e)        {            gridQueryResult.PageIndex = 0;            LoadData();            if (DataFieldTable != null)            {                StringBuilder sb = new StringBuilder();                sb.AppendFormat(@"var grid = Ext.getCmp('{0}'); var columnModel = grid.getColumnModel();", gridQueryResult.ClientID);                for (int i = 0; i < DataFieldTable.Rows.Count; i++)                {                    sb.AppendFormat("columnModel.setColumnHeader({0}, '{1}');", i + 1, DataFieldTable.Rows[i]["Alias"]);                }                ExtAspNet.PageContext.RegisterStartupScript(sb.ToString());            }        }

這裡用了一個datatable來儲存使用者選擇的欄位設定條件等屬性,你可以換成你儲存使用者選擇欄位列表。


OK.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.