【问题标题】:Pass all rows from grid that have certain value in a specific column传递网格中在特定列中具有特定值的所有行
【发布时间】:2014-02-19 10:41:59
【问题描述】:

我有一个名为 sampleGrid 的 Ext GridPanel,它有一些列。其中一个名为 IsAssigned,具有 bool 值

我有一个分机按钮。当我单击它时,我想传递所有 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>

任何帮助将不胜感激。

【问题讨论】:

    标签: asp.net ext.net


    【解决方案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 } };
    
        }
    

    【讨论】:

      【解决方案2】:

      伙计们,我已经使用 filterRecord 完成了。

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

      【讨论】:

      • 你的解决方案更好更简单,干得好
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-29
      • 1970-01-01
      • 1970-01-01
      • 2017-07-04
      • 1970-01-01
      • 2020-07-08
      相关资源
      最近更新 更多