2014-02-19 151 views
1

我有一個名爲sampleGrid的Ext GridPanel,它具有一些列。其中一個名爲IsAssigned持有布爾值從網格中傳遞具有特定列中的特定值的所有行

我有一個分機按鈕。當我點擊它時,我想通過所有IsAssigned列值爲false的行。

我可以通過所有的網格行,

請參見下面的代碼示例,

<ext:Button ID="btnSave" runat="server" Text="Save" 
           Icon="Accept"> 
           <DirectEvents> 
            <Click OnEvent="btnSave_Click"> 
            <ExtraParams> 
            <ext:Parameter Name="rows" Value="Ext.encode(#{sampleGrid}.getRowsValues())" 
            Mode="Raw" ></ext:Parameter> 
            </ExtraParams> 
            </Click> 
           </DirectEvents> 
          </ext:Button> 

這裏Ext.encode(#{sampleGrid} .getRowsValues())將通過所有行。但是我只想通過具有IsAssigned列值爲false的行。

isAssigned列代碼:

<ext:CheckColumn ColumnID="chkSelect" DataIndex="IsAssigned" MenuDisabled="true" 
              Sortable="true" Width="30px" Editable="true"> 
             </ext:CheckColumn> 

任何幫助將不勝感激。

回答

1

夥計們我用filterRecord完成了它。

<ext:Parameter Name="rows" Value="Ext.encode(#{sampleGrid}.getRowsValues(
              { 
              filterRecord : function (record) { 
              return (record.data.IsAssigned==false); } 
              }) 
              )" Mode="Raw" > 
</ext:Parameter> 
+0

你的解決方案更好更簡單,效果非常好 – sakir

1

我不確定它是否是最佳解決方案,但試試。

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
    <script> 

     function Test() { 
      var jsondata = Ext.encode(App.grd.getRowsValues()); 
      alert("{dt:" + jsondata + "}"); 
      var mynewitems = {}; 
      var myobj = JSON.parse('{"dt":' + jsondata +'}'); 


      for (var i = 0; i < myobj.dt.length; i++) { 
       alert(myobj.dt[i].data2); 
       if (myobj.dt[i].data2 == true) { myobj.dt.splice(i, 1); } 
      } 
      alert(myobj); 
      return myobj; 
     } 
    </script> 

</head> 
<body> 
    <form id="form1" runat="server"> 
     <ext:ResourceManager runat="server"></ext:ResourceManager> 


     <ext:Button ID="btnSave" runat="server" Text="Save" 
           Icon="Accept"> 
           <DirectEvents> 
            <Click OnEvent="btnSave_Click"> 
            <ExtraParams> 
            <ext:Parameter Name="rows" Value="Test()" 
            Mode="Raw" ></ext:Parameter> 
            </ExtraParams> 
            </Click> 
           </DirectEvents> 
          </ext:Button> 

    <ext:GridPanel runat="server" ID="grd" Height="300" Layout="FitLayout"> 

      <Store> 
       <ext:Store ID="Store1" runat="server"> 
        <Model> 
         <ext:Model ID="Model1" runat="server"> 
          <Fields> 
           <ext:ModelField Name="data0"></ext:ModelField> 
           <ext:ModelField Name="data1"></ext:ModelField> 
           <ext:ModelField Name="data2"></ext:ModelField> 
          </Fields> 
         </ext:Model> 
        </Model> 

       </ext:Store> 
      </Store> 
      <ColumnModel> 

       <Columns> 
        <ext:Column ID="Column1" runat="server" DataIndex="data0" Text="data0"></ext:Column> 
        <ext:Column ID="Column2" runat="server" DataIndex="data1" Text="data1"></ext:Column> 
        <ext:CheckColumn ID="CheckColumn1" runat="server" DataIndex="data2" Text="data2"></ext:CheckColumn> 
       </Columns> 
      </ColumnModel> 
     </ext:GridPanel> 
    </form> 
</body> 
</html> 

後面的代碼;

protected void Page_Load(object sender, EventArgs e) 
    { 
     grd.GetStore().DataSource = GetData(); 
     grd.DataBind(); 
    } 

    public void btnSave_Click(Object sender,DirectEventArgs e) 
    { 

     string js = e.ExtraParams["rows"].ToString(); 



      X.Msg.Alert("aaa", js).Show(); 

    } 
    private object[] GetData() 
    { 

     return new object[] { 
      new object[] { "test1", "test1", true }, 
      new object[] { "test2", "test2", false }, 
      new object[] { "test3", "test3", false } }; 

    } 
+1

其有用的感謝。我已經解決了任何方式。 :) – Rezoan

相關問題