extaspnet里应该没有封装相关方法,那就baidu吧
baidu是最好的老师,虽然它是流氓,但我承认中文资料搜索它就是老大,英文资料则绝对是google
找到答案:如下
- var sm = new Ext.grid.CheckboxSelectionModel({
- dataIndex:"id",
- listeners:{'beforerowselect': function( SelectionModel, rowIndex, keepExisting,record ) {
- if($.trim(record.data.ReleaseFlag)=='0'||$.trim(record.data.ReleaseFlag)=='-'){ //用户状态不正常
- //Ext.Msg.alert("提示信息","当前记录已经发布,无法再修改或发布!");
- //SelectionModel
- return false; //不能进行选择
- }else{
- return true;
- }
- }}
- });
尝试把代码写到页面 onReady事件里面添加addlistens,调试几次都不成功,遂搬出老方法,替换render
代码如下:
- protected override void Render(HtmlTextWriter writer)
- {
- StringWriter strWriter = new StringWriter();
- base.Render(new HtmlTextWriter(strWriter));
- writer.Write(
- strWriter.ToString()
- .Replace("var x2_sm=new Ext.grid.CheckboxSelectionModel({singleSelect:false});",
- "var x2_sm = new Ext.grid.CheckboxSelectionModel({listeners:{'beforerowselect':"+
- "function( SelectionModel,rowIndex,keepExisting,record)"+
- "{if (rowIndex==2){return false;}else{return true;}},singleSelect:false}});")
- );
- }
代码中x2_sm是我测试页面中grid的CheckboxSelectionModel,直接透过替换法添加了beforerowselect事件
这事件中测试,让grid第3行无法选中。
运行测试,效果满意,第3行无法选中,单击行,点行首checkbox,全选都不行,目的达到,收工,因为是后台代码,控制逻辑也更方便,还可以配合rowcolor行颜色的方法来加以标识,则效果完美
|