break; }
} while (firstSelectedRowIndex >= 0 || firstSelectedRowIndex >= this.ASPxGridView1.VisibleRowCount);
if (firstSelectedRowIndex == -1) {
firstSelectedRowIndex = 0; }
int logID = (int)(this.ASPxGridView1.GetRowValues(firstSelectedRowIndex, \
this.ASPxGridView1.MakeRowVisible(logID);//使指定行可见 this.ASPxGridView1.FocusedRowIndex = 0;//使指定行成为当前行 this.ASPxGridView1.Selection.UnselectAll();//取消所有行的选择 this.ASPxGridView1.Selection.SelectRow(0);//选中第一行
this.ASPxGridView1.StartEdit(firstSelectedRowIndex);//使指定行进入编辑状态
4.删除
(1)如果数据源不支持删除则无法执行。必须有主键才能删除(KeyFieldName)。 (2)可调用DeleteRow方法实现数据删除。DeleteRow成功执行后会将数据从数据库中删除。调用DeleteRow方法会首先触发RowDeleting事件(可以在此事件中阻止删除),执行后会触发RowDeleted事件。终端用户还可以通过点击内置的【删除】按钮实现删除。
DeleteRow语法:
Void DeleteRow(int visibleIndex) 参数visibleIndex表示行号。
RowDeleting事件的声明原型:
void ASPxGridView1_RowDeleting(object sender, DevExpress.Web.Data.ASPxDataDeletingEventArgs e)
可以通过修改ASPxDataDeletingEventArgs.Cancel=true来阻止删除。 DevExpress.Web.Data.ASPxDataDeletingEventArgs属性: Cancel:bool,是否取消删除。可读写。
Keys:OrderedDictionary,要删除行的主键栏位值。只读。
Values: OrderedDictionary,要删除行的非主键(实际上是所有栏位)栏位值。只读。
示例:
//删除行前事件
protected void ASPxGridView1_RowDeleting(object sender, DevExpress.Web.Data.ASPxDataDeletingEventArgs e)
{
for (int i = 0; i < e.Keys.Count; i++) {
if (Int32.Parse(e.Keys[i].ToString()) > 20000) {
e.Cancel = true; break; } } }
RowDeleted事件的声明原型:
void ASPxGridView1_RowDeleted(object sender, DevExpress.Web.Data.ASPxDataDeletedEventArgs e)
可以在此事件中获取删除时出现的异常并按自己的方法处理异常,或记录成功删除的行数。
DevExpress.Web.Data.ASPxDataDeletedEventArgs属性包括: AffectedRecords:int,删除影响到的行数。只读。
Exception:Exception,删除数据期间发生的异常。只读。 ExceptionHandled:bool,是否已处理异常。可读写。 Keys:OrderedDictionary,要删除行的主键栏位值。只读。
Values: OrderedDictionary,要删除行的非主键(实际上是所有栏位)栏位值。只读。
6.从客户端选择数据与获取栏位值
1.选择或取消选择页面上所有行 利用SelectAllRowsOnPage方法 语法1:void SelectAllRowsOnPage()
语法2:void SelectAllRowsOnPage(bool selected) 参数selected指明是选择或取消选择所有行
2.选中或取消指定行或所有行
(1)SelectRows方法(根据行的索引来选择数据) 语法1: void SelectRows()
选择所有记录(包括不是当前页的记录)
语法2: void SelectRows(int visibleIndex)
选择指定行数据,但前提前是必须设置KeyFieldName,即AspxGridView主键
语法3: void SelectRows(int32[] visibleIndces) 选择指定的多行数据
语法4: void SelectRows(int visibleIndex,bool selected)
选择或取消选择指定的数据,参数selected指明是选择或取消选择所有行
语法5: void SelectRows(int32[] visibleIndces,bool selected)
选择或取消选择指定的多行数据,参数selected指明是选择或取消选择所有行
示例:我们要选中AspxGridVeiw中的第1-10行数据
var rows = new Array(); for (var i = 0; i < 10; i++) { rows[i] = i; }
grid.SelectRows(rows);
//注意:grid为AspxGridView的客户端ID,不是runat
(2)SelectRowsByKey方法(根据主键的值来选择数据,前提是必须为AspxGridView设置主键,即KeyFieldName属性)
语法1:void SelectRowsByKey(object key) 选择指定主键值的行数据
语法2:void SelectRowsByKey(Object[] keys) 选择指定主键值集合的多行数据
语法3:void SelectRowsByKey(object key, bool selected);
选择或者取消选择指定主键值的行数据,参数selected指明是选择或取消选择所有行
语法4:void SelectRowsByKey(Object[] keys, bool selected);
选择或者取消选择指定主键值集合的多行数据,参数selected指明是选择或取消选择所有行
3.获取选中行信息 (1)获取取选中的行数
语法:Int GetSelectedRowCount()
(2)获取选中行栏位值
function GetSelectedFieldValues(fieldNames : String,onCallback : ASPxClientGridViewValuesCallback); 示例:
function GetSelectedFieldValues(){ var fieldNames = \
grid.GetSelectedFieldValues(fieldNames, GetSelectedFieldValues_Callback); }
function GetSelectedFieldValues_Callback(result) { var msg=\
if (result.length > 0) {
for (var i = 0; i < result.length; i++) { msg = msg + result[i].toString(); } } alert(msg); }
注意:AspxGridView的许多前台取值都是在回调函数中进行。
4.取消页面上所有行的选择 (1)UnselectAllRowsOnPage方法
语法:void UnselectAllRowsOnPage()
5.取消指定行或所有行的选择 (1) UnselectRowOnPage方法
语法:function UnselectRowOnPage(visibleIndex : int);
(2) UnselectRows方法(根据行的索引来取消选择数据) 语法1:void UnselectRows();//取消所有行的选择
语法2:void UnselectRows(int visibleIndex);//取消指定行的选择
语法3:void UnselectRows(Int32[] visibleIndices); //取消指定范围内行的选择
(3) UnselectRowsByKey方法(根据主键的值来取消选择数据,前提是必须为AspxGridView设置主键)
语法1:void UnselectRowsByKey(Object[] keys); 语法2:void UnselectRowsByKey(object key);
7.从客户端与服务器端定位AspxGridView数据
一、从客户端定位数据:
1.将焦点转移到编辑行的指定列
(1)调用SetFocusedRowIndex设置焦点行
function SetFocusedRowIndex(visibleIndex : int);
调用SetFocusedRowIndex方法后将触发FocusedRowChanged事件
(2)调用FocusEditor方法将焦点转移到编辑行的指定列
语法1:FocusEditor(ASPxClientGridViewColumn column); 语法2:FocusEditor(int columnIndex);
语法3:FocusEditor(string columnFieldNameOrId);
2.获取焦点行号
调用GetFocusedRowIndex方法
语法:function GetFocusedRowIndex() : int;
3.将某行置为可见(未验证) 调用SetClientVisible方法。
4.跳转到指定页
(1)调用GotoPage方法跳转到指定行。 function GotoPage(pageIndex : int); (2)调用PrevPage方法跳转到前一页。 function PrevPage();
(3)调用NextPage方法跳转到下一页。 function NextPage();
二、从服务器端定位数据 1.设置焦点行
AspxGridView的焦点行(当前行)与选择行是有区别的 (1)获取或设置焦点行可以访问其FocusedRowIndex属性。
(2)可以通过SettingsBehavior.AllowFocusedRow读取或设置是否允许定位焦点行。 (3)可以调用AspxGridView的MakeRowVisible方法使指定主键值的行所在页可见,从而立即看到选中或跳转的效果。 例:
int keyValue = (int)(this.ASPxGridView1.GetRowValues(0,\this.ASPxGridView1.MakeRowVisible(keyValue); this.ASPxGridView1.FocusedRowIndex = 0;
this.ASPxGridView1.Selection.UnselectAll();//取消所有行的选择 this.ASPxGridView1.Selection.SelectRow(0);//选中第一行
2.将某行置为可见
调用MakeRowVisible方法。
3.跳转到指定页
将PageIndex修改为指定页号则可跳转到指定页。
8.从客户端与服务器端过滤与搜索AspxGridView中的数据