Ext Net代码写在哪,会生效

前言

  • 介绍基于 EXT.NET (版本2.2) 混合ExtJs 语法实现各种功能时,实现方式(具体就是代码写在哪). 简单分为前台和后台. 为方便描述, 自定义如下.
    • C#语法写的代码称为 后台代码.
    • JavaScript 写的代码称为 前台代码.
    • aspx界面视图中写 称为前台 . 包括
      //2.2 正常的C# 方法.

    //2.3 DirectMethod 方法

    • 方法上加上[DirectMethod] 注解的方法.
    • 如上方式介绍完后之后, 重点注意的是, 在前台(aspx)中写 后台代码 的目的或者说是适用场景, :
      用C#代码访问界面控件, 包含大量语法提示. 方法中也可以通过回调js代码, 设调用js方法完成相应功能, 如下代码说明.
     private void CreateGpl(System.Data.DataTable _rptData, GridPanel _gp, Store _store)
            {
                //清除旧数据与记录集
                _store.Reader.Clear();
                _gp.SelectionModel.Clear();
                _gp.ColumnModel.Columns.Clear();
                //_store.Model.Clear();
               
                if (_rptData.Rows.Count == 0)
                {
                    X.Msg.Alert("提示", "无数据显示.").Show();
                    _gp.Render();                
                    return;
                }
                
                //1. 序号列
                _gp.ColumnModel.Columns.Add(new RowNumbererColumn
                {
                    Text = "序号",
                    Width = 45
                });
                
                List modelFields = new List();
                foreach (System.Data.DataColumn _dataColumn in _rptData.Columns)
                {
                    var columnName = _dataColumn.ColumnName;
    
                            var _column = new  SummaryColumn();
                            _column.DataIndex = columnName;
                            _column.Text = columnNames[1];
                            _column.Align = Alignment.Right;                        
                            _column.SummaryType = SummaryType.Sum;
                            _column.Renderer = new Renderer("return Other.FormatMoney(value," + dataPres + ")");
                            _column.SummaryRenderer = new Renderer("return Other.FormatMoney(value," + dataPres + ")");
                            
                            _gp.ColumnModel.Columns.Add(_column);  
                        }
                    }
                    
                    modelFields.Add(_modelField);
                }
                _store.Fields.AddRange(modelFields);
                _store.DataSource = _rptData.DefaultView;
                _store.DataBind();
                
                _store.LoadData(_rptData);
                // 重绘
                //SumStore.Reload();
                _gp.Render();
            }
    
    • DirectEvent 方法
     
                            
                                
                            
                        
                                
                                    
                                        
                                        
                                        
                                    
                                
                            
    
    

    对应后台代码:

    /// 
            ///  查询事件
            /// 
            /// 
            ///         
            public void QueryData_Click(object sender, DirectEventArgs e)
            {
                QueryData.Disabled = true;
                try
                {
                    var OrgID = e.ExtraParams["orgId"];
                    var months = e.ExtraParams["month"];
                    var keyWords = e.ExtraParams["keyWord"];
    
                    BindData(OrgID, months, keyWords);
                    QueryData.Disabled = false;                
                }
                catch (Exception ex)
                {
                    QueryData.Disabled = false;                
                    X.Msg.Alert("异常", ex.Message);
                }
    
                X.Mask.Hide();
            }
    

    特别注意, 需要正常访问控件及使用, 需要修改页面的这个条件:

        
    

    ---------------------------------------分割线---------------------------------------------

    进阶

    DirectEvent和 DirectMethod

    • 这两个属于Ext.NET的特色, 展开讲都很多的类型. 这篇文章足够细致 , 参考:
      http://www.cnblogs.com/yc-755909659/p/3755323.html
      适用总结: DirectEvent 类似于给控件增加事件及回调, 在控件中或者统一在ext:resourseMgr中注册, 传递参数的方式及回调处理.
      directMethod 属于在js中调用 C#方法, 更加智能,回调等方式更加优雅. 数据处理.
      注意的是页面无关, 就是不需要取界面值传递, 可以使用静态方法. 非静态方法, Ext.NET控件在提交时会提交很多数据.

你可能感兴趣的:(Ext Net代码写在哪,会生效)