Вопрос

I have a Ext GridPanel named sampleGrid, which has some column. one of them is named IsAssigned holding a bool value.

I have a ext button. When I click it I want to pass all the row that has IsAssigned column value false.

I can pass all the grid rows,

See below code sample,

 <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> 

Here Ext.encode(#{sampleGrid}.getRowsValues()) will pass all the rows. But I want to pass only rows that have IsAssigned column value false.

isAssigned column code:

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

Any help will be appreciated.

Это было полезно?

Решение 2

Guys i have done it using filterRecord.

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

Другие советы

I am not sure if it is best solution but give try.

<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>

code behind;

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 } };

    }
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top