一、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:GridViewCommandColumnShowSelectCheckbox ="true"VisibleIndex="8"></dx:GridViewCommandColumn>
....其它列
</Columns>
二、ASPXGridView綁定數據 ASPxGridView1.KeyFieldName = "ID";//指定主鍵。直接更新數據和子表綁定 需要用到
ASPxGridView1.DataSource = dt.defaultView;//指定Grid的數據 ASPxGridView1.DataBind(); //執行綁定 注意,如果查詢結果字段有別名,編輯該字段時,UnboundType應設為Object
三、ASPXGridView查找 過濾數據,查找數據
方式一、展開列標題旁邊的過濾清單過濾數據(類似Excel的過濾方式)grid.Settings.ShowHeaderFilterButton = true;過濾清單列出了該列出現的所有數據。還可以自定義過濾清單的內容,用法參閱:http://demos.devexpress.com/ASPxGridViewDemos/Filtering/HeaderFilter.aspx
方式二、在列頭顯示字段過濾條件輸入框 grid.Settings.ShowFilterRow = true; 顯示條件判斷方式下拉列表grid.Settings.ShowFilterRowMenu = true;
四、刪除數據
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 ridViewDataComboBoxColumn).PropertiesComboBox.Items.Add(new ListEditItem(v, id));
}
在表格進行更新,添加操作時,e.NewValues[1])即可取到客戶端的值,
例如: model.WorkgroupID = Convert.ToInt32(e.NewValues[1]); 注意應先呈現COMBOX列,后綁定數據,字段綁定是區分大小寫的,要和SELECT語句字段名一模一樣
3.數據匯總: 匯總計算aspxgridview的所有行求得平均或總和並顯示在頁腳。
當settings.showfooter屬性設置為True,才顯示頁腳。
aspxgridview的匯總條目是放在totalsummary屬性里。設置DisplayFormat例如:總計{0]台終端,
設置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,出錯:“不支持所指定的方法”.
解決方法: 1、確保ASPxGridView已設置了KeyFieldName
2、確保ASPxGridView已定義了事件 OnRowDeleting, OnRowInserting, OnRowUpdating
3、后台代碼中有對 OnRowDeleting, OnRowInserting, OnRowUpdating 事件的處理。
B、 綁定主從表(IList)
List的元素帶有List屬性(Category.Products),並且需要以Grid嵌套的方式顯示。
1、 選中GridView(gird1),右鍵菜單選擇“編輯模板”—“DetailRow”,頁面打開明細數據界面,向DetailRow添加一個新的 ASPxGridView (grid2)顯示明細數據,可以設定grid2的Columns相關屬性。Grid2.SettingsDetail.IsDetailGrid = true 指定grid2作為從表數據表格。
2、 增加grid2 DataBinding事件
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定位數據,指定子表數據源
}
}
}
3、 右鍵點擊DetailRow,選“結束模板編輯”。修改grid1.SettingsDetail的相關屬性
Bool AllowOnlyOneMasterRowExpanded 默認False,是否只允許主表一行展開。True后展開第二行明細記錄時,會關閉上次展開的明細記錄。
Bool ShowDetailButton 是否顯示明細按鈕,True顯示一個“+”在行首
Bool ShowDetailRow True顯示明細數據
4、 過濾數據
方式一、展開列標題旁邊的過濾清單過濾數據(類似Excel的過濾方式) grid.Settings.ShowHeaderFilterButton = true;過濾清單列出了該列出現的所有數據。還可以自定義過濾清單的內容,用法參閱:http://demos.devexpress.com/ASPxGridViewDemos/Filtering/HeaderFilter.aspx
方式二、在列頭顯示字段過濾條件輸入框 grid.Settings.ShowFilterRow = true;
顯示條件判斷方式下拉列表grid.Settings.ShowFilterRowMenu = true;
5、 用戶自定義列顯示
Grid.SettingCustomizationWindow
Enabled 運行自定義列顯示
PopupHorizontalAlign 列編輯窗水平對齊方式
PopupVerticalAlign 列編輯窗垂直對齊方式
通過JavaScript打開列編輯框。
<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.獲取所有選擇行中的數據.這里要注意去這里查看 http://space.itpub.net/?uid-23109131-action-viewspace-itemid-676010
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)//循環遍歷這一行的每一列的數據
{
}