ASPxGridview使用總結

 

一。ASPXGridView外觀顯示
屬性:
Caption----列的標題(
KeyFieldName----數據庫字段
SEOFriendly 是否啓用搜索引擎優化
Summary 指定分頁彙總信息的格式

Setting節點的ShowFilterRow=True設置快速查找功能
 
SettingsBehavior.AllowFocusedRow=true 高亮選中的行,即選中行變色
SettingsBehavior.AllDragDrop=false禁止拖動標題列頭
SettingsBehavior.AllowSort實現列頭點擊後是否能夠排序
SettingsPager.ShowEmptyDataRows=True;當數據行爲空時,顯示空行
SettingsPager.PageSize 每頁顯示的記錄總數
AllButton.Text 「所有數據顯示」按鈕的文本
AllButton.Visible  是否顯示「所有數據顯示」按鈕
FirstPageBuotton/LastPageButton/NextPageButton/PrevPageButton/ 對應首頁、末頁、下頁、上頁,設置同上。
NumericButtonCount 最小值爲1,控制頁碼顯示個數
protected void ASPxGridView1_PageIndexChanged(object sender, EventArgs e)
    {
        databind();//只需從新綁定數據便可實現上下翻頁
    }
新建的列默認是GridViewDataTextColumn類型,選擇工具欄的Change To變動列的類型,能夠改變新增或修改時的編輯方式。
設置日期類型顯示格式,在「行爲」PropertiesDateEdit--DisplayFormatString--例如:{0:yyyy年MM月}

當選擇了show Group Panel時,FocusedRowChanged事件,重綁定數據,使用時先選中行,再查看
protected void ASPxGridView1_FocusedRowChanged(object sender, EventArgs e)
    {
        getdata();
    }
 
禁止某一列進行編輯,該列的行爲-EditFormSettings-Visible=False
 
代碼中隱藏編輯列的增長,刪除,更新按鈕
(ASPxGridView1.Columns[編輯列] as GridViewCommandColumn).NewButton .Visible= true;
(ASPxGridView1.Columns[編輯列] as GridViewCommandColumn).DeleteButton.Visible = true;
 (ASPxGridView1.Columns[8] as GridViewCommandColumn).UpdateButton .Visible= true;
 
每行都有一個CHECKBOX,能夠動態選擇,只須要這樣便可
<Columns>
             <dx:GridViewCommandColumn ShowSelectCheckbox ="true"VisibleIndex="8"></dx:GridViewCommandColumn>
....其它列
</Columns>
二。ASPXGridView綁定數據
ASPxGridView1.KeyFieldName = "ID";//指定主鍵。直接更新數據和子表綁定 須要用到

ASPxGridView1.DataSource = dt.defaultView;//指定Grid的數據
ASPxGridView1.DataBind();  //執行綁定
注意,若是查詢結果字段有別名,編輯該字段時,UnboundType應設爲Object
三。ASPXGridView查找
過濾數據,查找數據

方式1、展開列標題旁邊的過濾清單過濾數據(相似Excel的過濾方式)grid.Settings.ShowHeaderFilterButton = true;過濾清單列出了該列出現的全部數據。還能夠自定義過濾清單的內容,用法參閱:http://demos.devexpress.com/ASPxGridViewDemos/Filtering/HeaderFilter.aspxjavascript

方式2、在列頭顯示字段過濾條件輸入框 grid.Settings.ShowFilterRow = true; 顯示條件判斷方式下拉列表grid.Settings.ShowFilterRowMenu = true;java



四刪除數據
  protected void ASPxGridView1_RowDeleting(object sender, DevExpress.Web.Data.ASPxDataDeletingEventArgs e)
    {
      e.Cancel = true;//不然,只有刷新頁面才能看到刪除後的結果
        int id =Convert.ToInt32( e.Keys[0]);//獲取ID
      upd.DelDownFileList(id);//從數據庫刪除記錄
    UpLoadFileListBind();//數據表綁定
 
    }
ASPxGridView自帶的刪除提示,設兩個屬性便可:
SettingsBehavior. ==> ConfirmDelete=True
SettingsText ==> ConfirmDelete=要提示的字符串
五.更新
取值 用e.NewValues[索引]
而且記得更新數據後 ASPxGridView1.CancelEdit();//結束編輯狀態
        e.Cancel = true;
        bind();
例子: //更新
    protected void ASPxGridView1_RowUpdating(object sender, DevExpress.Web.Data.ASPxDataUpdatingEventArgs e)
    {
        Bill.Message m = new Bill.Message();

        //取值 用e.NewValues[索引]
        string id = Convert.ToString(e.Keys[0]);
        string event_date = e.NewValues[1].ToString();
        string event_title = e.NewValues[2].ToString();
        string event_description = e.NewValues[3].ToString();
        string tag = e.NewValues[4].ToString();
        m.Message_update(id, event_date, event_title, event_description, tag);
       
        ASPxGridView1.CancelEdit();//結束編輯狀態
        e.Cancel = true;
        bind();
    }
六排序
在BeforeColumnSortingGrouping事件中從新綁定一下數據
七.分頁
PageIndexChanged事件裏從新綁定一下數據

 
 
1.動態添加非數據綁定列,例子:動態添加行號列
if (!IsPostBack)
        {
            //動態添加行號非綁定數據
            GridViewDataTextColumn dl = new GridViewDataTextColumn();
            dl.Caption = "行號";
            dl.FieldName = "hh";//該列綁定的字段hh
            dl.UnboundType = DevExpress.Data.UnboundColumnType.String;//非數據綁定類型爲字符型
            dl.PropertiesTextEdit.DisplayFormatString = "c";//顯示字符的格式
            dl.PropertiesTextEdit.FocusedStyle.ForeColor = System.Drawing.Color.Red;
            dl.VisibleIndex = 0;//設置行號列的索引位置
            ASPxGridView1.Columns.Insert(0, dl);//把行號列插入0以前
           
           
            getdata();
            ASPxGridView1.Caption = "IP爲"+GetClientIP()+"的用戶,正在查看網銀終端更新內容";
   
        }
 
在CustomUnboundColumnData事件中
 protected void ASPxGridView1_CustomUnboundColumnData(object sender, ASPxGridViewColumnDataEventArgs e)
    {
        if (e.Column.FieldName == "hh" && e.IsGetData)
            e.Value = (e.ListSourceRowIndex + 1).ToString();
    }
 
2.ASPxComboBox列的相關操做
簡單的方法是
1.FiledName寫主表與此字段有關聯外鍵字段:例如uid
2.在PropertiesCombobox下面找這幾個屬性:
而後在客戶姓名的這一列的DataSourceId,給它綁定上咱們字表的ObjectDataSource
在TextField設置字段名稱,例如:name
在ValueField設置名稱應該就是字表的主鍵(也就是主表引用字表的外鍵),例如:uid
這樣就能夠輕鬆作到,不用寫代碼,綁定多張表
 
手寫代碼的方法來綁定ASPxComboBox
在aspx中將該列的-行爲-PropertiesComboBox-ValuesType設爲System.String避免ComboBox出現沒法選中的現象
 
using DevExpress.Web.ASPxGridView;
using DevExpress.Web.ASPxEditors;
 //在頁面加載時,給combox列賦值,這裏的workgroupID是在ASPxGridview中的Combox列綁定的字段
        (ASPxGridView1.Columns["WorkgroupID"] as GridViewDataComboBoxColumn).PropertiesComboBox.ValueType = typeof(int);
       
            fangqm.Netbank.Core.groupInfo group = new fangqm.Netbank.Core.groupInfo();
            DataTable dt = group.groupSelectAll();//table
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                int id = Convert.ToInt32(dt.Rows[i][0]);
                string v= dt.Rows[i][1].ToString();
                (ASPxGridView1.Columns["WorkgroupID"] as GridViewDataComboBoxColumn).PropertiesComboBox.Items.Add(new ListEditItem(v, id));
              
            }
在表格進行更新,添加操做時,e.NewValues[1])便可取到客戶端的值,例如:
model.WorkgroupID = Convert.ToInt32(e.NewValues[1]);
 
注意應先呈現COMBOX列,後綁定數據,字段綁定是區分大小寫的,要和SELECT語句字段名如出一轍
 
3.數據彙總

彙總計算aspxgridview的全部行求得平均或總和並顯示在頁腳。數據庫

當settings.showfooter屬性設置爲True,才顯示頁腳。express

aspxgridview的彙總條目是放在totalsummary屬性裏。設置DisplayFormat例如:總計{0]臺終端,ide

設置FieldName爲非綁定字段,SummaryType設爲Sum表示計算這一列的和工具

 

4.隱藏編輯列,在DataBound事件中
protected void ASPxGridView1_DataBound(object sender, EventArgs e)
    {
        if(ASPxGridView1.VisibleRowCount>0)
        {
            //ASPxGridView1.Columns[命令列索引]
            (ASPxGridView1.Columns[4] as GridViewCommandColumn).NewButton.Visible = false;
        }
    }

 



六。AspxGridView常見問題
A.點Edit或new按鈕,Delete出來Update和cancel,編輯完數據後點擊Update,出錯:「不支持所指定的方法」.解決方法:
一、確保ASPxGridView已設置了KeyFieldName
二、確保ASPxGridView已定義了事件 OnRowDeleting, OnRowInserting, OnRowUpdating
三、後臺代碼中有對 OnRowDeleting, OnRowInserting, OnRowUpdating 事件的處理。

二、 綁定主從表(IList)

List的元素帶有List屬性(Category.Products),而且須要以Grid嵌套的方式顯示。

一、  選中GridView(gird1),右鍵菜單選擇「編輯模板」—「DetailRow」,頁面打開明細數據界面,向DetailRow添加一個新的ASPxGridView (grid2)顯示明細數據,能夠設定grid2的Columns相關屬性。Grid2.SettingsDetail.IsDetailGrid = true 指定grid2做爲從表數據表格。

二、  增長grid2 DataBinding事件   

Code
protected void grid2_DataBinding(object sender, EventArgs e)
    {
        DevExpress.Web.ASPxGridView.ASPxGridView grid = sender as DevExpress.Web.ASPxGridView.ASPxGridView;
        if ((grid != null) && (dict != null))
        {         
            int i = (int) grid.GetMasterRowKeyValue();/*取主表記錄的Key,主表grid必須設定KeyFieldName*/
            if (i >= 0)
            {             
                grid.DataSource = dict .Products;//經過Key定位數據,指定子表數據源           
}
        }
}

三、  右鍵點擊DetailRow,選「結束模板編輯」。修改grid1.SettingsDetail的相關屬性

Bool AllowOnlyOneMasterRowExpanded 默認False,是否只容許主表一行展開。True後展開第二行明細記錄時,會關閉上次展開的明細記錄。

Bool ShowDetailButton 是否顯示明細按鈕,True顯示一個「+」在行首

Bool ShowDetailRow True顯示明細數據

四、 過濾數據

方式1、展開列標題旁邊的過濾清單過濾數據(相似Excel的過濾方式) grid.Settings.ShowHeaderFilterButton = true;過濾清單列出了該列出現的全部數據。還能夠自定義過濾清單的內容,用法參閱:http://demos.devexpress.com/ASPxGridViewDemos/Filtering/HeaderFilter.aspx

方式2、在列頭顯示字段過濾條件輸入框 grid.Settings.ShowFilterRow = true; 顯示條件判斷方式下拉列表grid.Settings.ShowFilterRowMenu = true;



五、 用戶自定義列顯示

Grid.SettingCustomizationWindow

Enabled 運行自定義列顯示

PopupHorizontalAlign 列編輯窗水平對齊方式

PopupVerticalAlign 列編輯窗垂直對齊方式



    經過JavaScript打開列編輯框。



Code
<script. type="text/javascript">

<%-- 變動按鈕的標題 --%>
function UpdateCustomizationWindowValue() {
    var element = document.getElementById("btnCustWindow");
    if(element == null) return;
    element.value = (grid.IsCustomizationWindowVisible() ? "Hide" : "Show") + " Customization Window";
}
<%-- 顯示自定義列編輯窗--%>
function ShowHideCustomizationWindow() {
    if(grid.IsCustomizationWindowVisible())
        grid.HideCustomizationWindow();
    else grid.ShowCustomizationWindow();       
    UpdateCustomizationWindowValue();
}
</script>
<input id="btnCustWindow" type="button" value="Show Customization Window" nclick="ShowHideCustomizationWindow();"/>

<dxwgv:ASPxGridView ID="gird"…………………….>
…………………………..
<ClientSideEvents CustomizationWindowCloseUp="function(s, e) { UpdateCustomizationWindowValue(); }" />
</dxwgv:ASPxGridView>



小技巧:
AspxGridView在綁定數據的時候,若是數據列的類型是日期型,這時應該用「GridViewDataColumn」而不該該用「GridViewDataTextColumn」,這樣的話,數據顯示出來的格式就如「1900-01-01",而不是"1900-01-01 0:00:00".

AspxGridView中查找控件不能像GridView中同樣用FindControl,而應該用 FindRowCellTemplateControl方法。

應該完全放棄Response.Write()方法來輸出字符中,若是頁面中調用了Response.Write方法,會致使AspxGridView的客戶端排序功能失去控件,具體表現爲:點擊排序時,顯示loading,而後就沒有反應了,一直loading下去,不會完成排序操做。

利用ASPxGridViewExporter導出aspxgridview中的數據時,若是有數據列,雖然咱們能夠利用
<PropertiesDateEdit DisplayFormatString="{0:yyyy-MM-dd}">

  </PropertiesDateEdit>來格式化aspxgridview的日期列顯示樣式,可是咱們卻沒法控制利用ASPxGridViewExporter導出後的excel文件中的樣式,這時,導出的excel文件中,日期列的顯示格式爲數據庫中aspxgridview數據源中日期列的格式。因此若是想控制導出後excel日期列的格式,必須從aspxgridview的數據源下手,在數據源中格式化日期列,就能夠達到格式化導出後excel文件日期列格式的目的了
四:導出ASPxGridView的數據
添加一個ASPxGridViewExporter控件到Page,設置GridViewID爲須要導出數據的aspxgridview,調用如下方法實現導出。
ASPxGridViewExporter1.WriteXlsToResponse()
ASPxGridViewExporter1.WriteCvsToResponse()
ASPxGridViewExporter1.WritePdfToResponse()
ASPxGridViewExporter1.WriteRtfToResponse()
關於導出EXCEL日期格式,操做EXCEL,設置單元格爲相應的格式便可
1.遍歷主鍵列中的全部數據.

List<object> keyValue = AspxGridView1.GetSelectedFieldValues("kid");

string str;

foreach(object key in keyValue)

{

    str = key.ToString();
}
2.動態選擇某一行.

//n爲要選擇的行數

AspxGridView1.Selection.SetSelection(n,true);


3.獲取全部選擇行中的數據.這裏要注意去這裏查看


4.問題:當AspxGridView的單元格中包含超連接按鈕時,AspxGridView排序後引發超連接錯位.

解決方案:設置超連接按鈕的屬性  EnableViewState=false;

5.根據某行的數據,動態設置選擇複選框不可編輯,及動態設置行背景色.

protected void AspxGridView1_HtmlRowPrepared(object sender,ASPxGridViewTableRowEventArgs e)

{

      //判斷bomcode是否爲空.

  if(e.GetValue("bomcode").ToString().Trim() == "")

    {

          //設置選擇複選框不可編輯   

          e.Row.Cell[0].Enabled = false;

          //將背景色設置爲淺灰色

    e.Row.BackColor = Color.LightGray;


    }
}

//表中有個連接地址,實現點連接地址下載文件,引用命名空間DevExpress.Web.ASPxGridView;
    //若是不想動態綁定,只須要設置列的FieldName爲連接址址字段,TextField爲顯示連接名稱的字段便可
    protected void ASPxGridView1_Init(object sender, EventArgs e)
    {
        GridViewDataHyperLinkColumn colLink = new GridViewDataHyperLinkColumn();//實例化一個超連接列
        colLink.Caption = "下載吧";//設置列頭
        colLink.PropertiesHyperLinkEdit.Text = "這是個連接";//顯示連接的名稱
        colLink.PropertiesHyperLinkEdit.TextField = "LinkName";//顯示連接名稱要綁定的字段       
        colLink.FieldName = "LinkURL";//該列綁定的字段
        colLink.PropertiesHyperLinkEdit.NavigateUrlFormatString="{0}";//連接地址就是該列綁定的字段

        colLink.Visible = true;
        colLink.Width = 200;
        ASPxGridView1.Columns.Add(colLink);//把該列添加到ASPxGridview

    }
 
using System.Collections.Generic; //取得當前控件值的集合 直接尋找控件的ID List <object> keyValues = this.GridViewmethod.GetSelectedFieldValues("F_XXX");//控件的ID foreach (object key in keyValues)//循環遍歷出來 { } 2.在AspGridView取得某一行 List <object> keyValues = this.GridViewmethod.GetCurrentPageRowValues("F_xxxxx");//F_xxxxx是主鍵的值 foreach (object key in keyValues)//循環遍歷這一行的每一列的數據 { }
相關文章
相關標籤/搜索