zoukankan      html  css  js  c++  java
  • Ext.Net中CheckboxSelectionModel的动态隐藏(显示),一定条件下的隐藏(不让选择),获得多选栏位的信息,及后台控件的动态创建

    (1) Ext.Net 中CheckboxSelectionModel在一定的条件下隐藏特定的row

    <head id="Head1" runat="server">
        <title></title>
        <script  type="text/javascript">
               var MyCheckBox = function (v, p, record) {                //固定格式,不变
                if (record.data.SPECVER <4) {     //红色的字体为栏位名称(type= int)
                    return "";
                }

                return '<div class="x-grid3-row-checker">';      //固定格式,不变
            };
        </script>   
    </head>

    并在下面的代码添加CustomConfig,Listeners属性  :

             <SelectionModel>
                    <ext:CheckboxSelectionModel ID="CheckboxSelectionModel1"   runat="server">   //生成CheckBox
                        <CustomConfig>          
                              <ext:ConfigItem Name="renderer" Value="MyCheckBox" Mode="Raw" />        //javascript Function 名称
                         </CustomConfig>
                         <Listeners>
                               <BeforeRowSelect Handler="return record.data.SPECVER>=4;" />         //栏位名称,需要变动
                         </Listeners>
                    </ext:CheckboxSelectionModel>                                                           
              </SelectionModel>

    (2 )Ext.Net 中动态的隐藏(Hidden属性)CheckBox  (CheckboxSelectionModel ):

                   

    protected void btnQueryHistory_Click(object sender, Ext.Net.DirectEventArgs e)

    {

           GridPanel. ColumnModel.SetHidden(0,true);          //(红色的)为GridPanel 名称   ,(绿色的)为要隐藏的栏位

    }

     (3)Ext.Net中获得被多选中的row :

            1.))集中批次处理:

                  RowSelectionModel lv_RowSelected = this.gpControlInfo.SelectionModel.Primary as RowSelectionModel;
                  if (lv_RowSelected.SelectedRows.Count > 0)

                 {

                         string sysIDS = "";
                         foreach (SelectedRow row in sm.SelectedRows)
                        {
                              sysIDS += row.RecordID + ";";              //RecordID的设置
                        }

                  }
                  lv_RowSelected.ClearSelections();     //需要清空所有,否则,下次没有选中任何的时候,SelectedRows.Count 还是为上次的值

               RecordID的设置,在Store的代码中添加(红色的部分):

              <ext:Store ID="stoControlInfo" runat="server" GroupDir="ASC">
                    <Reader>               
                        <ext:JsonReader IDProperty ="FORMSYSID">            //  为RecordID的值,根据需要相应的更改           
                        </ext:JsonReader>                
                    </Reader>
                    <AutoLoadParams>
                        <ext:Parameter Name="start" Mode="Raw" Value="0">
                        </ext:Parameter>
                        <ext:Parameter Name="limit" Mode="Raw" Value="15">
                        </ext:Parameter>
                    </AutoLoadParams>
             </ext:Store>

         2.))  单个的处理:

             <ext:Button 
                      ID="" 
                      runat="" 
                      Text="" 
                      Icon=""                                                    
                      X ="" 
                      Y ="" >

                     <DirectEvents> 
                            <Click OnEvent="btnActivateForm_Click">                 //后台Button事件 
                                  <ExtraParams>     //添加如下代码,gpControlInfo为GridPanel的ID
                                        <ext:Parameter Name="Values" Value="Ext.encode(#{gpControlInfo}.getRowsValues({selectedOnly:true}))" Mode="Raw" />
                                  </ExtraParams>  
                             </Click>                                     
                      </DirectEvents>
            </ext:Button>

           后台的处理:

              string json = e.ExtraParams["Values"];

              Dictionary<string, string>[] lv_Row = JSON.Deserialize<Dictionary<string, string>[]>(v_Json);
                foreach (Dictionary<string, string> row in lv_Row)
                {
                    foreach (KeyValuePair<string, string> keyvaluePaire in row)
                    {

                        //可以取得所有的栏位及栏位值,

                       //也可以取得想要的(相对应的)
                        if (keyvaluePaire.Key == "SPECNO")
                        {
                            pv_StrSpecNO = keyvaluePaire.Value;
                        }
                        else if (keyvaluePaire.Key == "SPECVER")
                        {
                            pv_StrSpecVer = keyvaluePaire.Value;
                        }
                    }

                }

    (4)Ext.Net后台动态实现GridPanel栏位的添加:

                this.stoControlInfo.AddField(new RecordField("SYSID", RecordFieldType.String));
                this.stoControlInfo.AddField(new RecordField("FORMID", RecordFieldType.String));
               

                this.gpControlInfo.ColumnModel.Columns.Add(new Column { Header = "SYSID_Show", DataIndex = "SYSID", Width = 10 });
                this.gpControlInfo.ColumnModel.Columns.Add(new Column { Header = "FORMID_Show", DataIndex = "FORMID", Width = 130 });

            DataIndex必须和RecordField的相同(如红色的),要不然有栏位显示,但是下面没有数据的哦!

        注:以上经过测试是正确的,请根据自己的需要做出变通,不对的地方或者是还有好的方法请告知,不胜感激!

        另外:(1)一个好的Ext.Net基础学习网站是:www.Ext.Net,有各控件的实例实现

                  (2)相关知识查找可以在官网(www.Ext.Net)中的右上角的"Search“框中进行查找,比在Baidu能查到更多的相关技术及实现!查找的是英文版的哦!

  • 相关阅读:
    多任务拷贝小案例
    进程池
    进程间的通信
    互斥锁
    创建函数/类的线程
    udp/tcp流程
    发布模块
    私有属性/方法的访问
    深入了解jQuery之整体架构
    (转)前端面试题
  • 原文地址:https://www.cnblogs.com/alexzp/p/2298890.html
Copyright © 2011-2022 走看看