[FIXED] [#190] [2.x] GridPanel Performance Issue While using Summary Feature

Page 1 of 2 12 LastLast
  1. #1

    [FIXED] [#190] [2.x] GridPanel Performance Issue While using Summary Feature

    Hello,

    I have used GridPanel which contains 100 columns and 300 rows.
    Among them 8 columns are summary column. And grid also contains Cell editing plugin.

    Now after loading data, while I edit one cell of summary column, it takes 6-7 seconds to go to next cell.
    Give me solution to improve performance.

    Thanks
    Shailesh
    Last edited by fabricio.murta; Apr 27, 2016 at 12:04 AM.
  2. #2
    Hello!

    I think you should review your Grid because so big tables always will make your page slow. Is it necessary to render all 100 columns?
  3. #3
    Hi Baidaly,

    Yes in my case 100 column is necessary to render because its not only view purpose but also for entry purpose.

    Thanks
    Shailesh
  4. #4
    Hi,

    Please provide a sample to reproduce the problem.
  5. #5
    Hi,

    Here is Sample, in which change any cell value(not just pass the focus but change the value of cell and then press tab it will tale 6-8 second to come in next cell).

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="StoneGrading.aspx.cs" Inherits="TTDesign.UI.Modules.TACC.StoneGrading" %>
    
    <%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head id="Head1" runat="server">
        <title>Ext.Net Example</title>
     
        <script type="text/javascript">
            
            var selection = null;
            var previousSingleCts = null;
            var previousSingleRapRate = null;
            var previousSingleFinalRate = null;
            var previousSingleFinalAmount = null;
            var previousSingleFinalDiscount = null;
            var previousSingleShapeID = null;
            var previousSingleColorID = null;
            var previousSingleClarityID = null;
            var counter = 0;
    
            var btnSave_State = function () {
    
                //if (btnState != null) {
                if (App.FormStoneGrading.disabled == false && App.btnRefresh.disabled == true) {
    
                    if (App.FormStoneGrading.isValid() == true) {
    
                        App.btnSave.enable(true);
                    }
                    else {
                        App.btnSave.disable(true);
                    }
                }
                else {
                    App.btnSave.disable(true);
                }
            }
    
            function roundNumber(number, digits) {
                var multiple = Math.pow(10, digits);
                var rndedNum = Math.round(number * multiple) / multiple;
                return rndedNum;
            };
    
            var avgPrice = function (records, cts, price) {
                var i = 0,
                    totAmount = 0,
                    totCts = 0,
                    length = records.length,
                    record,
                    totAvg = 0;
    
                for (; i < length; ++i) {
                    record = records[i];
    
                    if (record.get(cts) != undefined && record.get(price) != undefined) {
    
                        if (record.get(cts) != null && record.get(cts) != '')
                            totCts += record.get(cts);
                        if (record.get(cts) != null && record.get(price) != null)
                            totAmount += (record.get(cts) * record.get(price));
                    }
                }
    
                if (totCts != 0) {
    
                    totAvg = (totAmount / totCts);
                    totAvg = roundNumber(totAvg, 2);
                }
    
                return totAvg;
            };
    
            var avgDiscount = function (records, cts, rapPrice, price) {
                var i = 0,
                    totAmount = 0,
                    totRapAmount = 0,
                    totRapAvg = 0,
                    totCts = 0,
                    length = records.length,
                    record,
                    totAvg = 0;
                avgDisc = 0;
    
                for (; i < length; ++i) {
                    record = records[i];
    
                    if (record.get(cts) != undefined && record.get(price) != undefined) {
                        if (record.get(cts) != null)
                            totCts += record.get(cts);
                        if (record.get(cts) != null && record.get(price) != null)
                            totAmount += record.get(cts) * record.get(price);
                        if (record.get(cts) != null && record.get(rapPrice) != null)
                            totRapAmount += record.get(cts) * record.get(rapPrice);
                    }
                }
    
                if (totCts != 0) {
                    totAvg = roundNumber((totAmount / totCts), 2);
                    totRapAvg = roundNumber((totRapAmount / totCts), 2);
                    if (totRapAvg != 0)
                        avgDisc = roundNumber((((totAvg - totRapAvg) / totRapAvg) * 100), 2);
                }
    
                return avgDisc;
            };
    
            var CommanRenderer = function (value, pStore, pReturnValue) {
    
                var r = pStore.getById(value);
                if (Ext.isEmpty(r) || r.data.ParameterValueID == -1) {
                    return "";
                }
    
                return r.get(pReturnValue);
            }
            var OpenExcel = function (filePath) {
                myRef = window.open(filePath, 'OpenExcelFile', 'left=20,top=20,width=500,height=50,toolbar=1,resizable=0');
                myRef.focus();
            }
    
            var beforeEditSingleDetail = function (editor, e) {
    
                if (App.FormStoneGrading.disabled) {
                    e.cancel = true;
                    return;
                }
    
                if (e.field == 'Cts' || e.field == 'ShapeID' || e.field == 'ColorID' || e.field == 'ClarityID' ||
                    e.field == 'RapRate' || e.field == 'FinalDiscount' || e.field == 'FinalRate' || e.field == 'FinalAmount') {
                    previousSingleShapeID = App.StoreSingleDetail.data.items[e.rowIdx].data.ShapeID;
                    previousSingleColorID = App.StoreSingleDetail.data.items[e.rowIdx].data.ColorID;
                    previousSingleClarityID = App.StoreSingleDetail.data.items[e.rowIdx].data.ClarityID;
                    previousSingleCts = App.StoreSingleDetail.data.items[e.rowIdx].data.Cts;
                    previousSingleRapRate = App.StoreSingleDetail.data.items[e.rowIdx].data.RapRate;
                    previousSingleRapAmount = (App.StoreSingleDetail.data.items[e.rowIdx].data.RapRate * App.StoreSingleDetail.data.items[e.rowIdx].data.Cts);
                    previousSingleFinalDiscount = App.StoreSingleDetail.data.items[e.rowIdx].data.FinalDiscount;
                    previousSingleFinalRate = App.StoreSingleDetail.data.items[e.rowIdx].data.FinalRate;
                    previousSingleFinalAmount = App.StoreSingleDetail.data.items[e.rowIdx].data.FinalAmount;
                }
            }
    
            var resetTotal = function (pOldCts, pNewCts, pOldFinalAmt, pNewFinalAmt, pOldRapAmt, pNewRapAmt) {
    
                var totalCts = 0,
                    totalFinalAmt = 0,
                    avgFinalRate = 0,
                    avgFinalDisc = 0,
                    totalRapAmt = 0,
                    avgRapRate = 0;
    
                totalCts = App.txtSingleTotalCts.value - (!!pOldCts ? pOldCts : 0) + (!!pNewCts ? pNewCts : 0);
                App.txtSingleTotalCts.setValue(totalCts);
    
                //alert(' o cts ' + pOldCts + ' ,new cts ' + pNewCts + ' , old amt ' + pOldFinalAmt + ' , new amt ' + pNewFinalAmt + ' old rap amt ' + pOldRapAmt + ' new rap amt ' + pNewRapAmt);
                totalFinalAmt = App.txtSingleTotalFinalAmount.value - (!!pOldFinalAmt ? pOldFinalAmt : 0) + (!!pNewFinalAmt ? pNewFinalAmt : 0);
                totalRapAmt = App.txtSingleTotalRapAmount.value - (!!pOldRapAmt ? pOldRapAmt : 0) + (!!pNewRapAmt ? pNewRapAmt : 0);
    
                //alert(' tot cts ' + totalCts + ' tot f amt ' + totalFinalAmt + ' tot rap amt ' + totalRapAmt);
    
                App.txtSingleTotalFinalAmount.setValue(totalFinalAmt);
                App.txtSingleTotalRapAmount.setValue(totalRapAmt);
    
    
                if (totalCts != 0) {
                    avgFinalRate = totalFinalAmt / totalCts;
                    avgRapRate = totalRapAmt / totalCts;
                }
    
                if (avgRapRate != 0) {
                    avgFinalDisc = (((avgFinalRate - avgRapRate) / avgRapRate) * 100);
                }
    
                App.txtTotal.setValue('Single Total Cts : ' + roundNumber(totalCts, 2) + ",   Avg Rap : " + roundNumber(avgRapRate, 2) + ",   Avg Final Disc : " + roundNumber(avgFinalDisc, 2) + ",   Avg Final Rate : " + roundNumber(avgFinalRate, 2) + ",   Total Final Amount : " + roundNumber(totalFinalAmt, 2))
    
            }
    
            var editSingleDetail = function (editor, e) {
    
                currentSingleCts = App.StoreSingleDetail.data.items[e.rowIdx].data.Cts;
                currentSingleRapRate = App.StoreSingleDetail.data.items[e.rowIdx].data.RapRate;
    
                if (e.field == 'ShapeID') //&& e.colIdx == 0
                {
                    //checking blank
                    if (e.value == '') {
                        Ext.Msg.alert("Error", "Shape is mandatory..", function (btn) {
                            if (btn == 'ok') {
                                editor.startEdit(e.rowIdx, e.colIdx);
                            }
                        })
                    }
    
                }
    
                if (e.field == 'ColorID') //&& e.colIdx == 0
                {
                    //checking blank
                    if (e.value == '') {
                        Ext.Msg.alert("Error", "Color is mandatory..", function (btn) {
                            if (btn == 'ok') {
                                editor.startEdit(e.rowIdx, e.colIdx);
                            }
                        })
                    }
    
                }
    
                if (e.field == 'ClarityID') //&& e.colIdx == 0
                {
                    //checking blank
                    if (e.value == '') {
                        Ext.Msg.alert("Error", "Clarity is mandatory..", function (btn) {
                            if (btn == 'ok') {
                                editor.startEdit(e.rowIdx, e.colIdx);
                            }
                        })
                    }
    
                }
    
                if (e.field == 'CutID') //&& e.colIdx == 0
                {
                    //checking blank
                    if (e.value == '') {
                        Ext.Msg.alert("Error", "Cut is mandatory..", function (btn) {
                            if (btn == 'ok') {
                                editor.startEdit(e.rowIdx, e.colIdx);
                            }
                        })
                    };
                }
    
                if (e.field == 'PolishID') //&& e.colIdx == 0
                {
                    //checking blank
                    if (e.value == '') {
                        Ext.Msg.alert("Error", "Polish is mandatory..", function (btn) {
                            if (btn == 'ok') {
                                editor.startEdit(e.rowIdx, e.colIdx);
                            }
                        })
                    };
                }
    
                if (e.field == 'SymmetryID') //&& e.colIdx == 0
                {
                    //checking blank
                    if (e.value == '') {
                        Ext.Msg.alert("Error", "Symmetry is mandatory..", function (btn) {
                            if (btn == 'ok') {
                                editor.startEdit(e.rowIdx, e.colIdx);
                            }
                        })
                    };
                }
    
                if (e.field == 'FlourID') //&& e.colIdx == 0
                {
                    //checking blank
                    if (e.value == '') {
                        Ext.Msg.alert("Error", "Flour is mandatory..", function (btn) {
                            if (btn == 'ok') {
                                editor.startEdit(e.rowIdx, e.colIdx);
                            }
                        })
                    };
                }
    
                if (e.field == 'Cts') //&& e.colIdx == 0
                {
                    //checking blank
                    if (e.value == '') {
                        Ext.Msg.alert("Error", "Cts is mandatory..", function (btn) {
                            if (btn == 'ok') {
                                editor.startEdit(e.rowIdx, e.colIdx);
                            }
                        })
                    }
                    else {
                        resetTotal(previousSingleCts, e.value, previousSingleFinalAmount, App.StoreSingleDetail.getAt(e.rowIdx).data.FinalAmount, previousSingleRapAmount, (App.StoreSingleDetail.getAt(e.rowIdx).data.RapRate * currentSingleCts));
                    }
                }
    
                if (e.field == 'ShapeID' || e.field == 'Cts' || e.field == 'ColorID' || e.field == 'ClarityID') {
                    currentSingleShapeID = App.StoreSingleDetail.data.items[e.rowIdx].data.ShapeID;
                    currentSingleCts = App.StoreSingleDetail.data.items[e.rowIdx].data.Cts;
                    currentSingleColorID = App.StoreSingleDetail.data.items[e.rowIdx].data.ColorID;
                    currentSingleClarityID = App.StoreSingleDetail.data.items[e.rowIdx].data.ClarityID;
    
                    if (currentSingleShapeID != previousSingleShapeID || currentSingleColorID != previousSingleColorID || currentSingleClarityID != previousSingleClarityID) {
                        if (currentSingleShapeID != null && currentSingleCts != null && currentSingleColorID != null && currentSingleClarityID != null &&
                            currentSingleShapeID != '' && currentSingleCts != '' && currentSingleColorID != '' && currentSingleClarityID != '') {
    
                            App.direct.FetchSingleRapPrice(currentSingleShapeID, currentSingleCts, currentSingleColorID, currentSingleClarityID, {
                                success: function (result) {
                                    if (result != null) {
                                        App.StoreSingleDetail.getAt(e.rowIdx).data.RapRate = result;
    
                                        if (result != 0) {
                                            if (App.StoreSingleDetail.data.items[e.rowIdx].data.FinalDiscount != null &&
                                                App.StoreSingleDetail.data.items[e.rowIdx].data.FinalDiscount != '') {
                                                App.StoreSingleDetail.getAt(e.rowIdx).data.FinalRate = roundNumber((result + (result * App.StoreSingleDetail.data.items[e.rowIdx].data.FinalDiscount) / 100), 2);
                                                App.StoreSingleDetail.getAt(e.rowIdx).data.FinalAmount = roundNumber((App.StoreSingleDetail.data.items[e.rowIdx].data.FinalRate * currentSingleCts), 2)
                                            }
                                        }
                                        else {
                                            App.StoreSingleDetail.getAt(e.rowIdx).data.FinalDiscount = null;
                                            App.StoreSingleDetail.getAt(e.rowIdx).data.InwDiscount = null;
                                        }
                                        resetTotal(previousSingleCts, currentSingleCts, previousSingleFinalAmount, App.StoreSingleDetail.getAt(e.rowIdx).data.FinalAmount, previousSingleRapAmount, (App.StoreSingleDetail.getAt(e.rowIdx).data.RapRate * currentSingleCts));
                                        previousSingleFinalAmount = App.StoreSingleDetail.getAt(e.rowIdx).data.FinalAmount;
                                        previousSingleRapAmount = (App.StoreSingleDetail.getAt(e.rowIdx).data.RapRate * currentSingleCts);
                                        e.grid.view.refreshNode(e.rowIdx);
                                    }
                                }
                            });
                        }
                    }
                }
    
                if (e.field == 'FinalDiscount') {
    
                    if (currentSingleCts != null && currentSingleRapRate != null) {
    
                        if (e.value != previousSingleFinalDiscount) {
                            if (previousSingleRapAmount == '') {
                                previousSingleRapAmount = (App.StoreSingleDetail.getAt(e.rowIdx).data.RapRate * currentSingleCts)
                            }
    
                            if (e.value != null && e.value != '') {
                                App.StoreSingleDetail.getAt(e.rowIdx).data.FinalRate = roundNumber((currentSingleRapRate + (currentSingleRapRate * e.value) / 100), 2)
                                App.StoreSingleDetail.getAt(e.rowIdx).data.FinalAmount = roundNumber((App.StoreSingleDetail.data.items[e.rowIdx].data.FinalRate * currentSingleCts), 2)
    
                                if (App.StoreSingleDetail.getAt(e.rowIdx).data.ShapeID == previousSingleShapeID || App.StoreSingleDetail.getAt(e.rowIdx).data.ColorID == previousSingleColorID || App.StoreSingleDetail.getAt(e.rowIdx).data.ClarityID == previousSingleClarityID) {
                                    //alert(' p cts ' + previousSingleCts + ' c cts ' + currentSingleCts + ' p final amt ' + previousSingleFinalAmount + ' c final amt ' + App.StoreSingleDetail.getAt(e.rowIdx).data.FinalAmount + ' p rap ' + previousSingleRapAmount + ' C rap ' + (App.StoreSingleDetail.getAt(e.rowIdx).data.RapRate * currentSingleCts));
                                    resetTotal(previousSingleCts, currentSingleCts, previousSingleFinalAmount, App.StoreSingleDetail.getAt(e.rowIdx).data.FinalAmount, previousSingleRapAmount, (App.StoreSingleDetail.getAt(e.rowIdx).data.RapRate * currentSingleCts));
                                }
                                e.grid.view.refreshNode(e.rowIdx);
                            }
                            else {
                                App.StoreSingleDetail.getAt(e.rowIdx).data.FinalRate = roundNumber(currentSingleRapRate, 2)
                                App.StoreSingleDetail.getAt(e.rowIdx).data.FinalAmount = roundNumber((App.StoreSingleDetail.data.items[e.rowIdx].data.FinalRate * currentSingleCts), 2)
                                resetTotal(previousSingleCts, currentSingleCts, previousSingleFinalAmount, App.StoreSingleDetail.getAt(e.rowIdx).data.FinalAmount, previousSingleRapAmount, (App.StoreSingleDetail.getAt(e.rowIdx).data.RapRate * currentSingleCts));
                                e.grid.view.refreshNode(e.rowIdx);
                            }
                        }
                    }
                }
    
                if (e.field == 'FinalRate') {
                    if (currentSingleCts != null && currentSingleRapRate != null) {
                        if (previousSingleRapAmount == '') {
                            previousSingleRapAmount = (App.StoreSingleDetail.getAt(e.rowIdx).data.RapRate * currentSingleCts)
                        }
                        if (e.value != previousSingleFinalRate) {
                            if (e.value != null && e.value != '') {
                                if (currentSingleRapRate != 0) {
                                    App.StoreSingleDetail.getAt(e.rowIdx).data.FinalDiscount = roundNumber(((100 * e.value) / currentSingleRapRate) - 100, 2)
                                }
                                App.StoreSingleDetail.getAt(e.rowIdx).data.FinalAmount = roundNumber((e.value * currentSingleCts), 2)
                                resetTotal(previousSingleCts, currentSingleCts, previousSingleFinalAmount, App.StoreSingleDetail.getAt(e.rowIdx).data.FinalAmount, previousSingleRapAmount, (App.StoreSingleDetail.getAt(e.rowIdx).data.RapRate * currentSingleCts));
                                e.grid.view.refreshNode(e.rowIdx);
                            }
                            else {
                                App.StoreSingleDetail.getAt(e.rowIdx).data.FinalDiscount = 100;
                                App.StoreSingleDetail.getAt(e.rowIdx).data.FinalAmount = 0;
                                resetTotal(previousSingleCts, currentSingleCts, previousSingleFinalAmount, App.StoreSingleDetail.getAt(e.rowIdx).data.FinalAmount, previousSingleRapAmount, (App.StoreSingleDetail.getAt(e.rowIdx).data.RapRate * currentSingleCts));
                                e.grid.view.refreshNode(e.rowIdx);
                            }
                        }
                    }
                }
    
                if (e.field == 'FinalAmount') {
    
                    if (currentSingleCts != null && currentSingleRapRate != null && currentSingleCts != 0) {
                        if (previousSingleRapAmount == '') {
                            previousSingleRapAmount = (App.StoreSingleDetail.getAt(e.rowIdx).data.RapRate * currentSingleCts)
                        }
    
                        if (e.value != previousSingleFinalAmount) {
                            if (e.value != null && e.value != '') {
                                App.StoreSingleDetail.getAt(e.rowIdx).data.FinalRate = roundNumber((e.value / currentSingleCts), 2)
                                resetTotal(previousSingleCts, currentSingleCts, previousSingleFinalAmount, App.StoreSingleDetail.getAt(e.rowIdx).data.FinalAmount, previousSingleRapAmount, (App.StoreSingleDetail.getAt(e.rowIdx).data.RapRate * currentSingleCts));
                                if (currentSingleRapRate != 0) {
                                    App.StoreSingleDetail.getAt(e.rowIdx).data.FinalDiscount = roundNumber(((100 * (e.value / currentSingleCts)) / currentSingleRapRate) - 100, 2)
                                }
                                e.grid.view.refreshNode(e.rowIdx);
                            }
                            else {
                                App.StoreSingleDetail.getAt(e.rowIdx).data.FinalRate = 0
                                App.StoreSingleDetail.getAt(e.rowIdx).data.FinalDiscount = 100
                                resetTotal(previousSingleCts, currentSingleCts, previousSingleFinalAmount, App.StoreSingleDetail.getAt(e.rowIdx).data.FinalAmount, previousSingleRapAmount, (App.StoreSingleDetail.getAt(e.rowIdx).data.RapRate * currentSingleCts));
                                e.grid.view.refreshNode(e.rowIdx);
                            }
                        }
                    }
                }
    
            }
    
            var totAmt = function (records) {
                var i = 0,
                    length = records.length,
                    total = 0,
                    record;
    
                for (; i < length; ++i) {
                    record = records[i];
                    if (record.get('Cts') != undefined && record.get('EV1') != undefined) {
                        total += record.get('Cts') * record.get('EV1');
                    }
                }
    
                return total;
            };
    
            var avgEV1 = function (records) {
                return avgPrice(records, 'Cts', 'EV1');
            }
    
            var avgRapRate = function (records) {
                return avgPrice(records, 'Cts', 'RapRate');
            }
    
            var avgFinalRate = function (records) {
                return avgPrice(records, 'Cts', 'FinalRate');
            }
    
            var avgFinalDiscount = function (records) {
                return avgDiscount(records, 'Cts', 'RapRate', 'FinalRate');
            }
    
            var checkExtenstion = function (value) {
                var a = value.lastIndexOf('.');
                if (a > 0) {
                    var b = value.substr(a);
                    if (b == '.xls' || b == '.xlsx') {
                        return true;
                    } else {
                        return false;
                    }
                }
            }
    
        </script>
    </head>
    <body>
        <form id="Form1" runat="server">
        <ext:ResourceManager ID="ResourceManager1" runat="server" />
            <ext:Store ID="StoreSheetName" IDMode="Static" runat="server">
            <Model>
                <ext:Model ID="ModelSheetName" runat="server" IDProperty="ValueField">
                    <Fields>
                        <ext:ModelField Name="ValueField" />
                    </Fields>
                </ext:Model>
            </Model>
        </ext:Store>
    
        <ext:Store ID="StoreLabObjID" runat="server" IDMode="Static">
            <Model>
                <ext:Model ID="ModelLabObjID" runat="server" IDMode="Static" IDProperty="ObjID">
                    <Fields>
                        <ext:ModelField Name="ObjID" />
                        <ext:ModelField Name="ObjName" />
                    </Fields>
                </ext:Model>
            </Model>
        </ext:Store>
    
        <ext:Store ID="StoreSingleShapeID" runat="server" IDMode="Static">
            <Model>
                <ext:Model ID="ModelSingleShapeID" IDProperty="ParameterValueID" runat="server">
                    <Fields>
                        <ext:ModelField Name="ParameterValueID" />
                        <ext:ModelField Name="ValueName" />
                    </Fields>
                </ext:Model>
            </Model>
        </ext:Store>
    
        <ext:Store ID="StoreSingleColorID" runat="server" IDMode="Static">
            <Model>
                <ext:Model ID="ModelSingleColorID" IDProperty="ParameterValueID" runat="server">
                    <Fields>
                        <ext:ModelField Name="ParameterValueID" />
                        <ext:ModelField Name="ValueName" />
                    </Fields>
                </ext:Model>
            </Model>
        </ext:Store>
    
        <ext:Store ID="StoreSingleClarityID" runat="server" IDMode="Static">
            <Model>
                <ext:Model ID="ModelSingleClarity" IDProperty="ParameterValueID" runat="server">
                    <Fields>
                        <ext:ModelField Name="ParameterValueID" />
                        <ext:ModelField Name="ValueName" />
                    </Fields>
                </ext:Model>
            </Model>
        </ext:Store>
    
        <ext:Store ID="StoreSingleCutID" runat="server" IDMode="Static">
            <Model>
                <ext:Model ID="ModelSingleCutID" IDProperty="ParameterValueID" runat="server">
                    <Fields>
                        <ext:ModelField Name="ParameterValueID" />
                        <ext:ModelField Name="ValueName" />
                    </Fields>
                </ext:Model>
            </Model>
        </ext:Store>
    
        <ext:Store ID="StoreSinglePolishID" runat="server" IDMode="Static">
            <Model>
                <ext:Model ID="ModelSinglePolishID" IDProperty="ParameterValueID" runat="server">
                    <Fields>
                        <ext:ModelField Name="ParameterValueID" />
                        <ext:ModelField Name="ValueName" />
                    </Fields>
                </ext:Model>
            </Model>
        </ext:Store>
    
        <ext:Store ID="StoreSingleSymmetryID" runat="server" IDMode="Static">
            <Model>
                <ext:Model ID="ModelSingleSymmetryID" IDProperty="ParameterValueID" runat="server">
                    <Fields>
                        <ext:ModelField Name="ParameterValueID" />
                        <ext:ModelField Name="ValueName" />
                    </Fields>
                </ext:Model>
            </Model>
        </ext:Store>
    
        <ext:Store ID="StoreSingleFlourID" runat="server" IDMode="Static">
            <Model>
                <ext:Model ID="ModelSingleFlourID" IDProperty="ParameterValueID" runat="server">
                    <Fields>
                        <ext:ModelField Name="ParameterValueID" />
                        <ext:ModelField Name="ValueName" />
                    </Fields>
                </ext:Model>
            </Model>
        </ext:Store>
    
        <ext:Store ID="StoreSingleLusterID" runat="server" IDMode="Static">
            <Model>
                <ext:Model ID="ModelSingleLusterID" IDProperty="ParameterValueID" runat="server">
                    <Fields>
                        <ext:ModelField Name="ParameterValueID" />
                        <ext:ModelField Name="ValueName" />
                    </Fields>
                </ext:Model>
            </Model>
        </ext:Store>
    
        <ext:Store ID="StoreSingleProp" runat="server" IDMode="Static">
            <Model>
                <ext:Model ID="ModelSingleProp" IDProperty="ParameterValueID" runat="server">
                    <Fields>
                        <ext:ModelField Name="ParameterValueID" />
                        <ext:ModelField Name="ValueName" />
                    </Fields>
                </ext:Model>
            </Model>
        </ext:Store>
    
        <ext:Store ID="StoreSingleCuletSize" runat="server" IDMode="Static">
            <Model>
                <ext:Model ID="ModelSingleCuletSize" IDProperty="ParameterValueID" runat="server">
                    <Fields>
                        <ext:ModelField Name="ParameterValueID" />
                        <ext:ModelField Name="ValueName" />
                    </Fields>
                </ext:Model>
            </Model>
        </ext:Store>
    
        <ext:Store ID="StoreSingleTableInclusion" runat="server" IDMode="Static">
            <Model>
                <ext:Model ID="ModelSingleTableInclusion" IDProperty="ParameterValueID" runat="server">
                    <Fields>
                        <ext:ModelField Name="ParameterValueID" />
                        <ext:ModelField Name="ValueName" />
                    </Fields>
                </ext:Model>
            </Model>
        </ext:Store>
    
        <ext:Store ID="StoreSingleOpenInclusion" runat="server" IDMode="Static">
            <Model>
                <ext:Model ID="Model6" IDProperty="ParameterValueID" runat="server">
                    <Fields>
                        <ext:ModelField Name="ParameterValueID" />
                        <ext:ModelField Name="ValueName" />
                    </Fields>
                </ext:Model>
            </Model>
        </ext:Store>
    
        <ext:Store ID="StoreSingleCrownInclusion" runat="server" IDMode="Static">
            <Model>
                <ext:Model ID="SingleCrownInclusion" IDProperty="ParameterValueID" runat="server">
                    <Fields>
                        <ext:ModelField Name="ParameterValueID" />
                        <ext:ModelField Name="ValueName" />
                    </Fields>
                </ext:Model>
            </Model>
        </ext:Store>
    
        <ext:Store ID="StoreSinglePavilionInclusion" runat="server" IDMode="Static">
            <Model>
                <ext:Model ID="ModelSinglePavilionInclusion" IDProperty="ParameterValueID" runat="server">
                    <Fields>
                        <ext:ModelField Name="ParameterValueID" />
                        <ext:ModelField Name="ValueName" />
                    </Fields>
                </ext:Model>
            </Model>
        </ext:Store>
    
        <ext:Store ID="StoreSinglePavilionVisible" runat="server" IDMode="Static">
            <Model>
                <ext:Model ID="ModelSinglePavilionVisible" IDProperty="ParameterValueID" runat="server">
                    <Fields>
                        <ext:ModelField Name="ParameterValueID" />
                        <ext:ModelField Name="ValueName" />
                    </Fields>
                </ext:Model>
            </Model>
        </ext:Store>
    
        <ext:Store ID="StoreSingleBrown" runat="server" IDMode="Static">
            <Model>
                <ext:Model ID="ModelSingleBrown" IDProperty="ParameterValueID" runat="server">
                    <Fields>
                        <ext:ModelField Name="ParameterValueID" />
                        <ext:ModelField Name="ValueName" />
                    </Fields>
                </ext:Model>
            </Model>
        </ext:Store>
    
        <ext:Store ID="StoreSingleNatts" runat="server" IDMode="Static">
            <Model>
                <ext:Model ID="ModelSingleNatts" IDProperty="ParameterValueID" runat="server">
                    <Fields>
                        <ext:ModelField Name="ParameterValueID" />
                        <ext:ModelField Name="ValueName" />
                    </Fields>
                </ext:Model>
            </Model>
        </ext:Store>
    
        <ext:Store ID="StoreSingleHeartArrow" runat="server" IDMode="Static">
            <Model>
                <ext:Model ID="ModelSingleHeartArrow" IDProperty="ParameterValueID" runat="server">
                    <Fields>
                        <ext:ModelField Name="ParameterValueID" />
                        <ext:ModelField Name="ValueName" />
                    </Fields>
                </ext:Model>
            </Model>
        </ext:Store>
    
        <ext:Store ID="StoreSingleGirdle" runat="server" IDMode="Static">
            <Model>
                <ext:Model ID="ModelSingleGirdle" IDProperty="ParameterValueID" runat="server">
                    <Fields>
                        <ext:ModelField Name="ParameterValueID" />
                        <ext:ModelField Name="ValueName" />
                    </Fields>
                </ext:Model>
            </Model>
        </ext:Store>
    
        <ext:Store ID="StoreSingleGirdleInclusion" runat="server" IDMode="Static">
            <Model>
                <ext:Model ID="ModelSingleGirdleInclusion" IDProperty="ParameterValueID" runat="server">
                    <Fields>
                        <ext:ModelField Name="ParameterValueID" />
                        <ext:ModelField Name="ValueName" />
                    </Fields>
                </ext:Model>
            </Model>
        </ext:Store>
    
        <ext:Store ID="StoreSingleGirdleCondition" runat="server" IDMode="Static">
            <Model>
                <ext:Model ID="ModelSingleGirdleCondition" IDProperty="ParameterValueID" runat="server">
                    <Fields>
                        <ext:ModelField Name="ParameterValueID" />
                        <ext:ModelField Name="ValueName" />
                    </Fields>
                </ext:Model>
            </Model>
        </ext:Store>
    
        <ext:Store ID="StoreSingleClarityStatus" runat="server" IDMode="Static">
            <Model>
                <ext:Model ID="ModelSingleClarityStatus" IDProperty="ParameterValueID" runat="server">
                    <Fields>
                        <ext:ModelField Name="ParameterValueID" />
                        <ext:ModelField Name="ValueName" />
                    </Fields>
                </ext:Model>
            </Model>
        </ext:Store>
    
        <ext:Store ID="StoreSinglePainting" runat="server" IDMode="Static">
            <Model>
                <ext:Model ID="ModelSinglePainting" IDProperty="ParameterValueID" runat="server">
                    <Fields>
                        <ext:ModelField Name="ParameterValueID" />
                        <ext:ModelField Name="ValueName" />
                    </Fields>
                </ext:Model>
            </Model>
        </ext:Store>
    
        <ext:Store ID="StoreSingleColorTing" runat="server" IDMode="Static">
            <Model>
                <ext:Model ID="ModelSingleColorTing" IDProperty="ParameterValueID" runat="server">
                    <Fields>
                        <ext:ModelField Name="ParameterValueID" />
                        <ext:ModelField Name="ValueName" />
                    </Fields>
                </ext:Model>
            </Model>
        </ext:Store>
    
        <ext:Store ID="StoreSingleFolurTing" runat="server" IDMode="Static">
            <Model>
                <ext:Model ID="ModelSingleFolurTing" IDProperty="ParameterValueID" runat="server">
                    <Fields>
                        <ext:ModelField Name="ParameterValueID" />
                        <ext:ModelField Name="ValueName" />
                    </Fields>
                </ext:Model>
            </Model>
        </ext:Store>
    
        <ext:Store ID="StoreSingleFeather" runat="server" IDMode="Static">
            <Model>
                <ext:Model ID="ModelSingleFeather" IDProperty="ParameterValueID" runat="server">
                    <Fields>
                        <ext:ModelField Name="ParameterValueID" />
                        <ext:ModelField Name="ValueName" />
                    </Fields>
                </ext:Model>
            </Model>
        </ext:Store>
    
        <ext:Store ID="StoreSingleExtraFacet" runat="server" IDMode="Static">
            <Model>
                <ext:Model ID="ModelSingleExtraFacet" IDProperty="ParameterValueID" runat="server">
                    <Fields>
                        <ext:ModelField Name="ParameterValueID" />
                        <ext:ModelField Name="ValueName" />
                    </Fields>
                </ext:Model>
            </Model>
        </ext:Store>
    
        <ext:Store ID="StoreSingleCavity" runat="server" IDMode="Static">
            <Model>
                <ext:Model ID="ModelSingleCavity" IDProperty="ParameterValueID" runat="server">
                    <Fields>
                        <ext:ModelField Name="ParameterValueID" />
                        <ext:ModelField Name="ValueName" />
                    </Fields>
                </ext:Model>
            </Model>
        </ext:Store>
    
        <ext:Store ID="StoreSingleFancyColor" runat="server" IDMode="Static">
            <Model>
                <ext:Model ID="ModelSingleFancyColor" IDProperty="ParameterValueID" runat="server">
                    <Fields>
                        <ext:ModelField Name="ParameterValueID" />
                        <ext:ModelField Name="ValueName" />
                    </Fields>
                </ext:Model>
            </Model>
        </ext:Store>
    
        <ext:Store ID="StoreSingleMilky" runat="server" IDMode="Static">
            <Model>
                <ext:Model ID="ModelSingleMilky" IDProperty="ParameterValueID" runat="server">
                    <Fields>
                        <ext:ModelField Name="ParameterValueID" />
                        <ext:ModelField Name="ValueName" />
                    </Fields>
                </ext:Model>
            </Model>
        </ext:Store>
    
        <ext:Store ID="StoreSinglePolishFeatures" runat="server" IDMode="Static">
            <Model>
                <ext:Model ID="ModelSinglePolishFeatures" IDProperty="ParameterValueID" runat="server">
                    <Fields>
                        <ext:ModelField Name="ParameterValueID" />
                        <ext:ModelField Name="ValueName" />
                    </Fields>
                </ext:Model>
            </Model>
        </ext:Store>
    
        <ext:Store ID="StoreSingleSymmetryFeatures" runat="server" IDMode="Static">
            <Model>
                <ext:Model ID="ModelSingleSymmetryFeatures" IDProperty="ParameterValueID" runat="server">
                    <Fields>
                        <ext:ModelField Name="ParameterValueID" />
                        <ext:ModelField Name="ValueName" />
                    </Fields>
                </ext:Model>
            </Model>
        </ext:Store>
    
        <ext:Store ID="StoreSingleFlourColor" runat="server" IDMode="Static">
            <Model>
                <ext:Model ID="ModelSingleFlourColor" IDProperty="ParameterValueID" runat="server">
                    <Fields>
                        <ext:ModelField Name="ParameterValueID" />
                        <ext:ModelField Name="ValueName" />
                    </Fields>
                </ext:Model>
            </Model>
        </ext:Store>
    
    
        <ext:FormPanel ID="FormStoneGrading" runat="server" DefaultAnchor="100%" BodyBorder="1" BodyPadding="5" Frame="true" IDMode="Static" MaskOnDisable="false" Disabled="true">
            <Items>
                <ext:Container ID="container2" runat="server" IDMode="Static" Layout="HBoxLayout">
                    <Items>
                        <ext:FieldSet ID="FieldSetOption" runat="server" Flex="1" Title="Select Stone By" Layout="HBoxLayout">
                            <Items>
                                <ext:DateField ID="dtTransDate" runat="server" FieldLabel="Date" Anchor="30%" LabelAlign="Right" IDMode="Static" AllowBlank="false" />
                                <ext:Component ID="Component2" runat="server" Width="25" />
                                <ext:FieldContainer ID="fc1" runat="server">
                                    <Items>
                                        <ext:RadioGroup ID="rdSelection" IDMode="Static" runat="server" FieldLabel="Stone Fetch By">
                                            <Items>
                                                <ext:Radio ID="rdExcel" runat="server" BoxLabel="Stone Excel" IDMode="Static" InputValue="X" Width="100" />
                                                <ext:Radio ID="rdGrading" runat="server" BoxLabel="Upload Grading" IDMode="Static" InputValue="G" Width="110" />
                                                <ext:Radio ID="rdParameters" runat="server" BoxLabel="Parameters" IDMode="Static" InputValue="P" Width="90" />
                                                <ext:Radio ID="rdPacket" runat="server" BoxLabel="Lot-Packet" IDMode="Static" InputValue="L" Width="90" />
                                                <ext:Radio ID="rdBarcode" runat="server" BoxLabel="Barcode" Checked="true" IDMode="Static" InputValue="B" Width="75" />
                                                <ext:Radio ID="rdStone" runat="server" BoxLabel="StoneID" IDMode="Static" InputValue="S" Width="65" />
                                            </Items>
                                            <Listeners>
                                                <Change Handler=" var a = #{rdSelection}.getChecked() ;
                                                                    selection = a[0].inputValue;
                                                                    #{FieldSetExcel}.disable(true);  #{txtFileUpload}.value = '';
                                                                    #{txtBarcode}.disable(true); #{txtBarcode}.value = '';
                                                                    if(selection == 'X')
                                                                    {
                                                                        #{FieldSetExcel}.enable(true);
                                                                        
                                                                    }
                                                                    else if(selection == 'G')
                                                                    {
                                                                        #{FieldSetExcel}.enable(true);
                                                                        
                                                                    }
                                                                    else if(selection == 'P')
                                                                    {
                                                                        App.direct.ParameterWiseSearch();
                                                                    } 
                                                                    else if(selection == 'L')
                                                                    {
                                                                        App.direct.StoneWiseSearch();
                                                                    } 
                                                                        else if(selection == 'B')
                                                                    {
                                                                            #{txtBarcode}.enable(true);
                                                                        
                                                                    } 
                                                                        else if(selection == 'S')
                                                                    {
                                                                            #{txtBarcode}.enable(true);
                                                                        
                                                                    } 
                                                                        " />
                                            </Listeners>
                                        </ext:RadioGroup>
                                    </Items>
                                </ext:FieldContainer>
                                <ext:TextField ID="txtBarcode" runat="server" IDMode="Static" EnableKeyEvents="true" Width="200">
                                    <Listeners>
                                        <KeyPress Handler="if(e.getKey() == Ext.EventObject.ENTER)
                                                            {       
                                                                var a = #{rdSelection}.getChecked() ;
                                                                selection = a[0].inputValue;                                                             
                                                                if(selection == 'B') 
                                                                    {     
                                                                    var b = #{StoreSingleDetail}.find('StoneID', #{txtBarcode}.value);                                                                                                                       
                                                                    if(b==-1) 
                                                                    {                                          
                                                                            App.direct.FetchStoneThroughBarcodeOrStoneID('B');
                                                                    }
                                                                    else
                                                                    { 
                                                                            alert('Stone is already added in Grading Detail.')
                                                                    }
                                                                }
                                                                else if(selection == 'S') 
                                                                {
                                                                    var c = #{StoreSingleDetail}.find('DisplayStoneID', #{txtBarcode}.value);
                                                                    if(c==-1)
                                                                        {
                                                                        App.direct.FetchStoneThroughBarcodeOrStoneID('S');
                                                                    }
                                                                    else
                                                                        {
                                                                            alert('Stone is already added in Grading Detail.')
                                                                        } 
                                                                }                                                            
                                                            }" />
    
                                    </Listeners>
    
                                </ext:TextField>
    
                            </Items>
                        </ext:FieldSet>
                        <ext:Component ID="comp1" runat="server" Width="8" />
    
                    </Items>
                </ext:Container>
                <ext:FieldSet ID="FieldSetExcel" runat="server" Flex="1" Title="Excel Parameters" Layout="HBoxLayout">
                    <Items>
                        <ext:FileUploadField ID="txtFileUpload" runat="server" Text="Select Excel File" Icon="Attach" Width="375" IDMode="Static" PreventMark="true">
                            <Listeners>
                                <Change Handler="var a=#{txtFileUpload}.value;
                                                    if(!checkExtenstion(a)){
                                                    alert('Plz select Excel - CSV File.');
                                                this.markInvalid('Invalid Selection');                
                                        }             else
                                    {
                                        this.clearInvalid();
                                    }                                      
                                    " />
                            </Listeners>
                            
                        </ext:FileUploadField>
    
                        <ext:ComboBox ID="cmbSheet" runat="server" DisplayField="ValueField" ValueField="ValueField" Width="150" IDMode="Static" ForceSelection="true" StoreID="StoreSheetName">
                        </ext:ComboBox>
                        <ext:TextField ID="txtFP" runat="server" Hidden="true" IDMode="Static" />
                        <ext:Button ID="btnUpload" runat="server" Icon="PageExcel" Text="Upload" IDMode="Static">
                            
                        </ext:Button>
                    </Items>
                </ext:FieldSet>
            </Items>
            <Listeners>
                <FieldValidityChange Handler="btnSave_State();" />
            </Listeners>
        </ext:FormPanel>
        <ext:FormPanel ID="FormPanel1" runat="server" Title="Stone Grading" DefaultAnchor="100%" BodyBorder="1" BodyPadding="5" Frame="true" IDMode="Static" MaskOnDisable="false" Height="390">
            <Items>
                <ext:GridPanel ID="GridSingleDetail" runat="server" IDMode="Static" RowLines="true" ColumnLines="true" Height="350" BodyBorder="1" AutoScroll="true">
                    <Store>
                        <ext:Store ID="StoreSingleDetail" runat="server" IDMode="Static" >
                           
                            <Model>
                                <ext:Model ID="ModelSingleDetail" runat="server" IDMode="Static" IDProperty="CollectionID" ClientIdProperty="DoNotUse">
                                    <Fields>
                                        <ext:ModelField Name="CollectionID" Mapping="CollectionID" DefaultValue="-1" />
                                        <ext:ModelField Name="CompanyID" Mapping="CompanyID" DefaultValue="-1" />
                                        <ext:ModelField Name="EntryType" Mapping="EntryType" />
                                        <ext:ModelField Name="PObjTypeID" Mapping="PObjTypeID" DefaultValue="-1" />
                                        <ext:ModelField Name="PObjID" Mapping="PObjID" DefaultValue="-1" />
                                        <ext:ModelField Name="PTreeID" Mapping="PTreeID" DefaultValue="-1" />
                                        <ext:ModelField Name="ObjTypeID" Mapping="ObjTypeID" DefaultValue="-1" />
                                        <ext:ModelField Name="ObjID" Mapping="ObjID" DefaultValue="-1" />
                                        <ext:ModelField Name="TreeID" Mapping="TreeID" DefaultValue="-1" />
                                        <ext:ModelField Name="LotID" Mapping="LotID" />
                                        <ext:ModelField Name="PktID" Mapping="PktID" />
                                        <ext:ModelField Name="StoneID" Mapping="StoneID" DefaultValue="-1" />
                                        <ext:ModelField Name="DisplayStoneID" Mapping="DisplayStoneID" />
                                        <ext:ModelField Name="Pcs" />
                                        <ext:ModelField Name="Cts" Mapping="Cts" />
                                        <ext:ModelField Name="WgtDiff" Mapping="WgtDiff" />
                                        <ext:ModelField Name="TransDate" Mapping="TransDate" />
                                        <ext:ModelField Name="RapRate" Mapping="RapRate" />
                                        <ext:ModelField Name="FinalRate" Mapping="FinalRate" />
                                        <ext:ModelField Name="FinalDiscount" Mapping="FinalDiscount" />
                                        <ext:ModelField Name="FinalAmount" Mapping="FinalAmount" />
                                        <ext:ModelField Name="IsFinal" Mapping="IsFinal" DefaultValue="true" />
                                        <ext:ModelField Name="TxnID" Mapping="TxnID" DefaultValue="-1" />
                                        <ext:ModelField Name="FrTxnID" Mapping="FrTxnID" />
                                        <ext:ModelField Name="IsCertified" Mapping="IsCertified" DefaultValue="false" />
                                        <ext:ModelField Name="LabObjID" Mapping="LabObjID" />
                                        <ext:ModelField Name="LabReportNo" Mapping="LabReportNo" />
                                        <ext:ModelField Name="LabControlNo" Mapping="LabControlNo" />
                                        <ext:ModelField Name="CertificateDate" Mapping="CertificateDate" />
                                        <ext:ModelField Name="SmartID" Mapping="SmartID" />
                                        <ext:ModelField Name="ShapeID" Mapping="ShapeID" />
                                        <ext:ModelField Name="SizeID" Mapping="SizeID" />
                                        <ext:ModelField Name="ColorID" Mapping="ColorID" />
                                        <ext:ModelField Name="ClarityID" Mapping="ClarityID" />
                                        <ext:ModelField Name="CutID" Mapping="CutID" />
                                        <ext:ModelField Name="PolishID" Mapping="PolishID" />
                                        <ext:ModelField Name="SymmetryID" Mapping="SymmetryID" />
                                        <ext:ModelField Name="FlourID" Mapping="FlourID" />
                                        <ext:ModelField Name="LusterID" Mapping="LusterID" />
                                        <ext:ModelField Name="Prop" Mapping="Prop" />
                                        <ext:ModelField Name="Length" Mapping="Length" />
                                        <ext:ModelField Name="Width" Mapping="Width" />
                                        <ext:ModelField Name="Height" Mapping="Height" />
                                        <ext:ModelField Name="Measurment" Mapping="Measurment" />
                                        <ext:ModelField Name="TotalDepth" Mapping="TotalDepth" />
                                        <ext:ModelField Name="CuletSize" Mapping="CuletSize" />
                                        <ext:ModelField Name="Inscription" Mapping="Inscription" />
                                        <ext:ModelField Name="DepthMM" Mapping="DepthMM" />
                                        <ext:ModelField Name="DepthPercent" Mapping="DepthPercent" />
                                        <ext:ModelField Name="TableMM" Mapping="TableMM" />
                                        <ext:ModelField Name="TablePercent" Mapping="TablePercent" />
                                        <ext:ModelField Name="TableWidthPercent" Mapping="TableWidthPercent" />
                                        <ext:ModelField Name="TableDiameter" Mapping="TableDiameter" />
                                        <ext:ModelField Name="TableOffCenter" Mapping="TableOffCenter" />
                                        <ext:ModelField Name="TableOffCulet" Mapping="TableOffCulet" />
                                        <ext:ModelField Name="TableInclusion" Mapping="TableInclusion" />
                                        <ext:ModelField Name="OpenInclusion" Mapping="OpenInclusion" />
                                        <ext:ModelField Name="CrownAngle" Mapping="CrownAngle" />
                                        <ext:ModelField Name="CrownHeight" Mapping="CrownHeight" />
                                        <ext:ModelField Name="CrownDepthMM" Mapping="CrownDepthMM" />
                                        <ext:ModelField Name="CrownDepthPercent" Mapping="CrownDepthPercent" />
                                        <ext:ModelField Name="CrownInclusion" Mapping="CrownInclusion" />
                                        <ext:ModelField Name="PavilionAngle" Mapping="PavilionAngle" />
                                        <ext:ModelField Name="PavilionHeight" Mapping="PavilionHeight" />
                                        <ext:ModelField Name="PavilionDepthMM" Mapping="PavilionDepthMM" />
                                        <ext:ModelField Name="PavilionDepthPecent" Mapping="PavilionDepthPecent" />
                                        <ext:ModelField Name="PavilionInclusion" Mapping="PavilionInclusion" />
                                        <ext:ModelField Name="PavilionVisible" Mapping="PavilionVisible" />
                                        <ext:ModelField Name="StarLength" Mapping="StarLength" />
                                        <ext:ModelField Name="LengthHalvesCrPercent" Mapping="LengthHalvesCrPercent" />
                                        <ext:ModelField Name="LengthHalvesPavPercent" Mapping="LengthHalvesPavPercent" />
                                        <ext:ModelField Name="lowerHalf" Mapping="lowerHalf" />
                                        <ext:ModelField Name="LowerHlafPercent" Mapping="LowerHlafPercent" />
                                        <ext:ModelField Name="Brown" Mapping="Brown" />
                                        <ext:ModelField Name="Natts" Mapping="Natts" />
                                        <ext:ModelField Name="HeartArrow" Mapping="HeartArrow" />
                                        <ext:ModelField Name="Diameter" Mapping="Diameter" />
                                        <ext:ModelField Name="DiameterMin" Mapping="DiameterMin" />
                                        <ext:ModelField Name="DiameterMax" Mapping="DiameterMax" />
                                        <ext:ModelField Name="Diameteravg" Mapping="Diameteravg" />
                                        <ext:ModelField Name="Girdle" Mapping="Girdle" />
                                        <ext:ModelField Name="GirdleMin" Mapping="GirdleMin" />
                                        <ext:ModelField Name="GirdleMax" Mapping="GirdleMax" />
                                        <ext:ModelField Name="GirdlAvg" Mapping="GirdlAvg" />
                                        <ext:ModelField Name="GirdlePercent" Mapping="GirdlePercent" />
                                        <ext:ModelField Name="GirdleInclusion" Mapping="GirdleInclusion" />
                                        <ext:ModelField Name="GirdleCondition" Mapping="GirdleCondition" />
                                        <ext:ModelField Name="KeyToSymbol" Mapping="KeyToSymbol" />
                                        <ext:ModelField Name="Comments1" Mapping="Comments1" />
                                        <ext:ModelField Name="Comments2" Mapping="Comments2" />
                                        <ext:ModelField Name="Comments3" Mapping="Comments3" />
                                        <ext:ModelField Name="ReportComments" Mapping="ReportComments" />
                                        <ext:ModelField Name="ClarityStatus" Mapping="ClarityStatus" />
                                        <ext:ModelField Name="Painting" Mapping="Painting" />
                                        <ext:ModelField Name="PaintingComments" Mapping="PaintingComments" />
                                        <ext:ModelField Name="StarPercent" Mapping="StarPercent" />
                                        <ext:ModelField Name="ColorTing" Mapping="ColorTing" />
                                        <ext:ModelField Name="TingRemark" Mapping="TingRemark" />
                                        <ext:ModelField Name="FolurTing" Mapping="FolurTing" />
                                        <ext:ModelField Name="MajorGS" Mapping="MajorGS" />
                                        <ext:ModelField Name="MinorGS" Mapping="MinorGS" />
                                        <ext:ModelField Name="Feather" Mapping="Feather" />
                                        <ext:ModelField Name="ExtraFacet" Mapping="ExtraFacet" />
                                        <ext:ModelField Name="Cavity" Mapping="Cavity" />
                                        <ext:ModelField Name="FancyColor" Mapping="FancyColor" />
                                        <ext:ModelField Name="Milky" Mapping="Milky" />
                                        <ext:ModelField Name="PolishFeatures" Mapping="PolishFeatures" />
                                        <ext:ModelField Name="SymmetryFeatures" Mapping="SymmetryFeatures" />
                                        <ext:ModelField Name="FlourColor" Mapping="FlourColor" />
                                        <ext:ModelField Name="SyntheticIndicator" Mapping="SyntheticIndicator" />
                                        <ext:ModelField Name="Para1" Mapping="Para1" />
                                        <ext:ModelField Name="Para2" Mapping="Para2" />
                                        <ext:ModelField Name="Para3" Mapping="Para3" />
                                        <ext:ModelField Name="Para4" Mapping="Para4" />
                                        <ext:ModelField Name="Para5" Mapping="Para5" />
                                        <ext:ModelField Name="Para6" Mapping="Para6" />
                                        <ext:ModelField Name="Para7" Mapping="Para7" />
                                        <ext:ModelField Name="Para8" Mapping="Para8" />
                                        <ext:ModelField Name="Para9" Mapping="Para9" />
                                        <ext:ModelField Name="Para10" Mapping="Para10" />
                                        <ext:ModelField Name="Remark" Mapping="Remark" />
                                        <ext:ModelField Name="EntDate" Mapping="EntDate" Type="Date" DefaultValue="new Date()" />
                                        <ext:ModelField Name="EntTerm" Mapping="EntTerm" />
                                        <ext:ModelField Name="EntUser" Mapping="EntUser" />
                                        <ext:ModelField Name="UpdDate" Mapping="UpdDate" Type="Date" DefaultValue="new Date()" />
                                        <ext:ModelField Name="UpdTerm" Mapping="UpdTerm" />
                                        <ext:ModelField Name="UpdUser" Mapping="UpdUser" />
                                    </Fields>
                                </ext:Model>
                            </Model>
                        </ext:Store>
                    </Store>
                    <ColumnModel>
                        <Columns>
                            <ext:Column ID="colSingleTxtStoneID" runat="server" DataIndex="DisplayStoneID" Text="StoneID" Sortable="true" Hideable="true">
                                <Editor>
                                    <ext:TextField ID="txtSingleTxtStoneID" runat="server" />
                                </Editor>
                            </ext:Column>
    
                            <ext:SummaryColumn ID="colSinglePcs" runat="server" DataIndex="Pcs" Text="Pcs" Sortable="true" Hideable="true" Align="Right" SummaryType="Sum">
                                <Editor>
                                    <ext:NumberField ID="txtSinglePcs" runat="server" MinValue="0" ReadOnly="true" />
                                </Editor>
                                <SummaryRenderer Handler="return (value)" />
                            </ext:SummaryColumn>
    
                            <ext:SummaryColumn ID="colSingleCts" runat="server" DataIndex="Cts" Text="Cts" Sortable="true" Hideable="true" Align="Right" SummaryType="Sum">
                                <Editor>
                                    <ext:NumberField ID="txtSingleCts" runat="server" MinValue="0" ReadOnly="true" />
                                </Editor>
    
                                <Renderer Handler="return Ext.util.Format.number(value,'0.00')" />
                                <SummaryRenderer Handler="return Ext.util.Format.number(value,'0.00')" />
                            </ext:SummaryColumn>
    
                            <ext:Column ID="colSingleShapeID" runat="server" DataIndex="ShapeID" Text="Shape" Align="Center">
                                <Renderer Handler="return CommanRenderer(value,App.StoreSingleShapeID,'ValueName')" />
                                <Editor>
                                    <ext:ComboBox ID="cmbSingleShapeID" runat="server" DisplayField="ValueName" ValueField="ParameterValueID" StoreID="StoreSingleShapeID" QueryMode="Local" ForceSelection="true" />
                                </Editor>
                            </ext:Column>
    
                            <ext:Column ID="colSingleColorID" runat="server" DataIndex="ColorID" Text="Color" Align="Center">
                                <Renderer Handler="return CommanRenderer(value,App.StoreSingleColorID,'ValueName')" />
                                <Editor>
                                    <ext:ComboBox ID="cmbSingleColorID" runat="server" DisplayField="ValueName" ValueField="ParameterValueID" StoreID="StoreSingleColorID" QueryMode="Local" ForceSelection="true" />
                                </Editor>
                            </ext:Column>
    
                            <ext:Column ID="colSingleClarityID" runat="server" DataIndex="ClarityID" Text="Clarity" Align="Center">
                                <Renderer Handler="return CommanRenderer(value,App.StoreSingleClarityID,'ValueName')" />
                                <Editor>
                                    <ext:ComboBox ID="cmbSingleClarityID" runat="server" ForceSelection="true" DisplayField="ValueName" ValueField="ParameterValueID" StoreID="StoreSingleClarityID" QueryMode="Local" />
                                </Editor>
                            </ext:Column>
    
                            <ext:SummaryColumn ID="colSingleRapRate" runat="server" DataIndex="RapRate" Text="Rap Rate" Sortable="true" Hideable="true" Align="Right" SummaryType="Sum">
                                <%--<Editor>
                                        <ext:NumberField ID="txtSingleRapRate" runat="server" MinValue="0"/>
                                    </Editor>--%>
                                <Renderer Handler="return Ext.util.Format.number(value,'0.00')" />
                                <SummaryRenderer Handler="return Ext.util.Format.number(value,'0.00')" />
                            </ext:SummaryColumn>
    
                            <ext:SummaryColumn ID="colSingleFinalDiscount" runat="server" DataIndex="FinalDiscount" Text="Final Disc%" Sortable="true" Hideable="true" Align="Right" SummaryType="Sum">
                                <Editor>
                                    <ext:NumberField ID="txtSingleFinalDiscount" runat="server" />
                                </Editor>
                                <Renderer Handler="return Ext.util.Format.number(value,'0.00')" />
                                <SummaryRenderer Handler="return Ext.util.Format.number(value,'0.00')" />
                            </ext:SummaryColumn>
    
                            <ext:SummaryColumn ID="colSingleFinalRate" runat="server" DataIndex="FinalRate" Text="Final Rate" Sortable="true" Hideable="true" Align="Right" SummaryType="Sum">
                                <Editor>
                                    <ext:NumberField ID="txtSingleFinalRate" runat="server" MinValue="0" />
                                </Editor>
                                <Renderer Handler="return Ext.util.Format.number(value,'0.00')" />
                                <SummaryRenderer Handler="return Ext.util.Format.number(value,'0.00')" />
                            </ext:SummaryColumn>
    
                            <ext:SummaryColumn ID="colSingleFinalAmount" runat="server" DataIndex="FinalAmount" Text="Final Amount" Sortable="true" Hideable="true" Align="Right" SummaryType="Sum">
                                <Editor>
                                    <ext:NumberField ID="txtSingleFinalAmount" runat="server" MinValue="0" />
                                </Editor>
                                <Renderer Handler="return Ext.util.Format.number(value,'0.00')" />
                                <SummaryRenderer Handler="return Ext.util.Format.number(value,'0.00')" />
                            </ext:SummaryColumn>
    
                            <ext:Column ID="colSingleIsCertified" runat="server" Text="Is Certified" DataIndex="IsCertified" Align="Center">
                                <Editor>
                                    <ext:Checkbox ID="chkSingleIsCertified" runat="server" />
                                </Editor>
                            </ext:Column>
    
                            <ext:Column ID="colSingleLabObjID" runat="server" DataIndex="LabObjID" Text="Lab" Align="Center">
                                <Renderer Handler="return CommanRenderer(value,App.StoreLabObjID,'ObjName')" />
                                <Editor>
                                    <ext:ComboBox ID="cmbSingleLabObjID" runat="server" DisplayField="ObjName" ValueField="ObjID" StoreID="StoreLabObjID" QueryMode="Local" />
                                </Editor>
                            </ext:Column>
    
                            <ext:Column ID="colSingleLabReportNo" runat="server" DataIndex="LabReportNo" Text="Lab Report No" Sortable="true" Hideable="true">
                                <Editor>
                                    <ext:TextField ID="txtSingleLabReportNo" runat="server" Width="100" />
                                </Editor>
                            </ext:Column>
    
                            <ext:Column ID="colSingleLabControlNo" runat="server" DataIndex="LabControlNo" Text="Lab Control No" Sortable="true" Hideable="true">
                                <Editor>
                                    <ext:TextField ID="txtSingleLabControlNo" runat="server" />
                                </Editor>
                            </ext:Column>
    
                            <ext:DateColumn ID="colSingleCertificateDate" runat="server" DataIndex="CertificateDate" Text="Certificate Date" Align="Center">
                                <Editor>
                                    <ext:DateField ID="dtSingleCertificateDate" runat="server" />
                                </Editor>
                            </ext:DateColumn>
    
                            <ext:Column ID="colSingleSmartID" runat="server" DataIndex="SmartID" Text="SmartID" Sortable="true" Hideable="true">
                                <Editor>
                                    <ext:TextField ID="txtSingleSmartID" runat="server" />
                                </Editor>
                            </ext:Column>
    
                            <ext:Column ID="colSingleSizeID" runat="server" DataIndex="SizeID" Text="Size" Sortable="true" Hideable="true">
                                <Editor>
                                    <ext:TextField ID="txtSingleSizeID" runat="server" />
                                </Editor>
                            </ext:Column>
    
    
                            <ext:Column ID="colSingleCutID" runat="server" DataIndex="CutID" Text="Cut" Align="Center">
                                <Renderer Handler="return CommanRenderer(value,App.StoreSingleCutID,'ValueName')" />
                                <Editor>
                                    <ext:ComboBox ID="cmbSingleCutID" runat="server" ForceSelection="true" DisplayField="ValueName" ValueField="ParameterValueID" StoreID="StoreSingleCutID" QueryMode="Local" />
                                </Editor>
                            </ext:Column>
    
                            <ext:Column ID="colPolishID" runat="server" DataIndex="PolishID" Text="Polish" Align="Center">
                                <Renderer Handler="return CommanRenderer(value,App.StoreSinglePolishID,'ValueName')" />
                                <Editor>
                                    <ext:ComboBox ID="cmbSinglePolishID" runat="server" ForceSelection="true" DisplayField="ValueName" ValueField="ParameterValueID" StoreID="StoreSinglePolishID" QueryMode="Local" />
                                </Editor>
                            </ext:Column>
    
                            <ext:Column ID="colSingleSymmetryID" runat="server" DataIndex="SymmetryID" Text="Symmetry" Align="Center">
                                <Renderer Handler="return CommanRenderer(value,App.StoreSingleSymmetryID,'ValueName')" />
                                <Editor>
                                    <ext:ComboBox ID="cmbSingleSymmetryID" runat="server" ForceSelection="true" DisplayField="ValueName" ValueField="ParameterValueID" StoreID="StoreSingleSymmetryID" QueryMode="Local" />
                                </Editor>
                            </ext:Column>
    
                            <ext:Column ID="colSingleFlourID" runat="server" DataIndex="FlourID" Text="Flour" Align="Center">
                                <Renderer Handler="return CommanRenderer(value,App.StoreSingleFlourID,'ValueName')" />
                                <Editor>
                                    <ext:ComboBox ID="cmbSingleFlourID" runat="server" ForceSelection="true" DisplayField="ValueName" ValueField="ParameterValueID" StoreID="StoreSingleFlourID" QueryMode="Local" />
                                </Editor>
                            </ext:Column>
    
                            <ext:Column ID="colSingleLusterID" runat="server" DataIndex="LusterID" Text="Luster" Align="Center">
                                <Renderer Handler="return CommanRenderer(value,App.StoreSingleLusterID,'ValueName')" />
                                <Editor>
                                    <ext:ComboBox ID="cmbSingleLusterID" runat="server" ForceSelection="true" DisplayField="ValueName" ValueField="ParameterValueID" StoreID="StoreSingleLusterID" QueryMode="Local" />
                                </Editor>
                            </ext:Column>
    
                            <ext:Column ID="colSingleProp" runat="server" DataIndex="Prop" Text="Prop" Align="Center">
                                <Renderer Handler="return CommanRenderer(value,App.StoreSingleProp,'ValueName')" />
                                <Editor>
                                    <ext:ComboBox ID="cmbSingleProp" runat="server" ForceSelection="true" DisplayField="ValueName" ValueField="ParameterValueID" StoreID="StoreSingleProp" QueryMode="Local" />
                                </Editor>
                            </ext:Column>
    
                            <ext:NumberColumn ID="colSingleLength" runat="server" DataIndex="Length" Text="Length" Sortable="true" Hideable="true" Align="Right" >
                                <Editor>
                                    <ext:NumberField ID="txtSingleLength" runat="server" MinValue="0" DecimalPrecision="2" />
                                </Editor>
                            </ext:NumberColumn>
    
                            <ext:NumberColumn ID="colSingleWidth" runat="server" DataIndex="Width" Text="Width" Sortable="true" Hideable="true" Align="Right" >
                                <Editor>
                                    <ext:NumberField ID="txtSingleWidth" runat="server" MinValue="0" DecimalPrecision="2" />
                                </Editor>
                            </ext:NumberColumn>
    
                            <ext:NumberColumn ID="colSingleHeight" runat="server" DataIndex="Height" Text="Height" Sortable="true" Hideable="true" Align="Right" >
                                <Editor>
                                    <ext:NumberField ID="txtSingleHeight" runat="server" MinValue="0" DecimalPrecision="2" />
                                </Editor>
                            </ext:NumberColumn>
    
                            <ext:Column ID="comSingleMeasurment" runat="server" DataIndex="Measurment" Text="Measurment" Sortable="true" Hideable="true">
                            </ext:Column>
    
                            <ext:NumberColumn ID="colSingleTotalDepth" runat="server" DataIndex="TotalDepth" Text="Total Depth" Sortable="true" Hideable="true" Align="Right" >
                                <Editor>
                                    <ext:NumberField ID="txtSingleTotalDepth" runat="server" MinValue="0" DecimalPrecision="2" />
                                </Editor>
                            </ext:NumberColumn>
    
                            <ext:Column ID="colSingleCuletSize" runat="server" DataIndex="CuletSize" Text="Culet Size" Align="Center">
                                <Renderer Handler="return CommanRenderer(value,App.StoreSingleCuletSize,'ValueName')" />
                                <Editor>
                                    <ext:ComboBox ID="cmbSingleCuletSize" runat="server" ForceSelection="true" DisplayField="ValueName" ValueField="ParameterValueID" StoreID="StoreSingleCuletSize" QueryMode="Local" />
                                </Editor>
                            </ext:Column>
    
                            <ext:Column ID="colSingleInscription" runat="server" DataIndex="Inscription" Text="Inscription" Sortable="true" Hideable="true">
                                <Editor>
                                    <ext:TextField ID="txtSingleInscription" runat="server" />
                                </Editor>
                            </ext:Column>
    
                            <ext:NumberColumn ID="colSingleDepthMM" runat="server" DataIndex="DepthMM" Text="Depth MM" Sortable="true" Hideable="true" Align="Right" >
                                <Editor>
                                    <ext:NumberField ID="txtSingleDepthMM" runat="server" MinValue="0" DecimalPrecision="2" />
                                </Editor>
                            </ext:NumberColumn>
    
                            <ext:NumberColumn ID="colSingleDepthPercent" runat="server" DataIndex="DepthPercent" Text="Depth %" Sortable="true" Hideable="true" Align="Right" >
                                <Editor>
                                    <ext:NumberField ID="txtSingleDepthPercent" runat="server" MinValue="0" DecimalPrecision="2" />
                                </Editor>
                            </ext:NumberColumn>
    
                            <ext:NumberColumn ID="colSingleTableMM" runat="server" DataIndex="TableMM" Text="Table MM" Sortable="true" Hideable="true" Align="Right" >
                                <Editor>
                                    <ext:NumberField ID="txtSingleTableMM" runat="server" MinValue="0" DecimalPrecision="2" />
                                </Editor>
                            </ext:NumberColumn>
    
                            <ext:NumberColumn ID="colSingleTablePercent" runat="server" DataIndex="TablePercent" Text="Table %" Sortable="true" Hideable="true" Align="Right" >
                                <Editor>
                                    <ext:NumberField ID="txtSingleTablePercent" runat="server" MinValue="0" DecimalPrecision="2" />
                                </Editor>
                            </ext:NumberColumn>
    
                            <ext:NumberColumn ID="colSingleTableWidthPercent" runat="server" DataIndex="TableWidthPercent" Text="Table Width %" Sortable="true" Hideable="true" Align="Right" >
                                <Editor>
                                    <ext:NumberField ID="txtSingleTableWidthPercent" runat="server" MinValue="0" DecimalPrecision="2" />
                                </Editor>
                            </ext:NumberColumn>
    
                            <ext:NumberColumn ID="colSingleTableDiameter" runat="server" DataIndex="TableDiameter" Text="Table Diameter" Sortable="true" Hideable="true" Align="Right" >
                                <Editor>
                                    <ext:NumberField ID="txtSingleTableDiameter" runat="server" MinValue="0" DecimalPrecision="2" />
                                </Editor>
                            </ext:NumberColumn>
    
                            <ext:NumberColumn ID="colSingleTableOffCenter" runat="server" DataIndex="TableOffCenter" Text="Table Off Center" Sortable="true" Hideable="true" Align="Right" >
                                <Editor>
                                    <ext:NumberField ID="txtSingleTableOffCenter" runat="server" MinValue="0" DecimalPrecision="2" />
                                </Editor>
                            </ext:NumberColumn>
    
                            <ext:NumberColumn ID="colSingleTableOffCulet" runat="server" DataIndex="TableOffCulet" Text="Table Off Culet" Sortable="true" Hideable="true" Align="Right" >
                                <Editor>
                                    <ext:NumberField ID="txtSingleTableOffCulet" runat="server" MinValue="0" DecimalPrecision="2" />
                                </Editor>
                            </ext:NumberColumn>
    
                            <ext:Column ID="colSingleTableInclusion" runat="server" DataIndex="TableInclusion" Text="Table Inclusion" Align="Center">
                                <Renderer Handler="return CommanRenderer(value,App.StoreSingleTableInclusion,'ValueName')" />
                                <Editor>
                                    <ext:ComboBox ID="cmbSingleTableInclusion" runat="server" ForceSelection="true" DisplayField="ValueName" ValueField="ParameterValueID" StoreID="StoreSingleTableInclusion" QueryMode="Local" />
                                </Editor>
                            </ext:Column>
    
                            <ext:Column ID="colSingleOpenInclusion" runat="server" DataIndex="OpenInclusion" Text="Open Inclusion" Align="Center">
                                <Renderer Handler="return CommanRenderer(value,App.StoreSingleOpenInclusion,'ValueName')" />
                                <Editor>
                                    <ext:ComboBox ID="txtSingleOpenInclusion" runat="server" ForceSelection="true" DisplayField="ValueName" ValueField="ParameterValueID" StoreID="StoreSingleOpenInclusion" QueryMode="Local" />
                                </Editor>
                            </ext:Column>
    
                            <ext:NumberColumn ID="colSingleCrownAngle" runat="server" DataIndex="CrownAngle" Text="Crown Angle" Sortable="true" Hideable="true" Align="Right" >
                                <Editor>
                                    <ext:NumberField ID="txtSingleCrownAngle" runat="server" MinValue="0" DecimalPrecision="2" />
                                </Editor>
                            </ext:NumberColumn>
    
                            <ext:NumberColumn ID="colSingleCrownHeight" runat="server" DataIndex="CrownHeight" Text="Crown Height" Sortable="true" Hideable="true" Align="Right" >
                                <Editor>
                                    <ext:NumberField ID="txtSingleCrownHeight" runat="server" MinValue="0" DecimalPrecision="2" />
                                </Editor>
                            </ext:NumberColumn>
    
                            <ext:NumberColumn ID="colSingleCrownDepthMM" runat="server" DataIndex="CrownDepthMM" Text="Crown Depth" Sortable="true" Hideable="true" Align="Right" >
                                <Editor>
                                    <ext:NumberField ID="txtSingleCrownDepthMM" runat="server" MinValue="0" DecimalPrecision="2" />
                                </Editor>
                            </ext:NumberColumn>
    
                            <ext:NumberColumn ID="colSingleCrownDepthPercent" runat="server" DataIndex="CrownDepthPercent" Text="Crown Depth %" Sortable="true" Hideable="true" Align="Right" >
                                <Editor>
                                    <ext:NumberField ID="txtSingleCrownDepthPercent" runat="server" MinValue="0" DecimalPrecision="2" />
                                </Editor>
                            </ext:NumberColumn>
    
                            <ext:Column ID="colSingleCrownInclusion" runat="server" DataIndex="CrownInclusion" Text="Crown Inclusion" Align="Center">
                                <Renderer Handler="return CommanRenderer(value,App.StoreSingleCrownInclusion,'ValueName')" />
                                <Editor>
                                    <ext:ComboBox ID="cmbSingleCrownInclusion" runat="server" ForceSelection="true" DisplayField="ValueName" ValueField="ParameterValueID" StoreID="StoreSingleCrownInclusion" QueryMode="Local" />
                                </Editor>
                            </ext:Column>
    
                            <ext:NumberColumn ID="colSinglePavilionAngle" runat="server" DataIndex="PavilionAngle" Text="Pavilion Angle" Sortable="true" Hideable="true" Align="Right" >
                                <Editor>
                                    <ext:NumberField ID="txtSinglePavilionAngle" runat="server" MinValue="0" DecimalPrecision="2" />
                                </Editor>
                            </ext:NumberColumn>
    
                            <ext:NumberColumn ID="colSinglePavilionHeight" runat="server" DataIndex="PavilionHeight" Text="Pavilion Height" Sortable="true" Hideable="true" Align="Right" >
                                <Editor>
                                    <ext:NumberField ID="txtSinglePavilionHeight" runat="server" MinValue="0" DecimalPrecision="2" />
                                </Editor>
                            </ext:NumberColumn>
    
                            <ext:NumberColumn ID="colSinglePavilionDepthMM" runat="server" DataIndex="PavilionDepthMM" Text="Pavilion Depth" Sortable="true" Hideable="true" Align="Right" >
                                <Editor>
                                    <ext:NumberField ID="txtSinglePavilionDepthMM" runat="server" MinValue="0" DecimalPrecision="2" />
                                </Editor>
                            </ext:NumberColumn>
    
                            <ext:NumberColumn ID="colSinglePavilionDepthPercent" runat="server" DataIndex="PavilionDepthPercent" Text="Pavilion Depth %" Sortable="true" Hideable="true" Align="Right" >
                                <Editor>
                                    <ext:NumberField ID="txtSinglePavilionDepthPercent" runat="server" MinValue="0" DecimalPrecision="2" />
                                </Editor>
                            </ext:NumberColumn>
    
                            <ext:Column ID="colSinglePavilionInclusion" runat="server" DataIndex="PavilionInclusion" Text="Pavilion Inclusion" Align="Center">
                                <Renderer Handler="return CommanRenderer(value,App.StoreSinglePavilionInclusion,'ValueName')" />
                                <Editor>
                                    <ext:ComboBox ID="cmbSinglePavilionInclusion" runat="server" ForceSelection="true" DisplayField="ValueName" ValueField="ParameterValueID" StoreID="StoreSinglePavilionInclusion" QueryMode="Local" />
                                </Editor>
                            </ext:Column>
    
                            <ext:Column ID="colSinglePavilionVisible" runat="server" DataIndex="PavilionVisible" Text="Pavilion Visible" Align="Center">
                                <Renderer Handler="return CommanRenderer(value,App.StoreSinglePavilionVisible,'ValueName')" />
                                <Editor>
                                    <ext:ComboBox ID="txtSinglePavilionVisible" runat="server" ForceSelection="true" DisplayField="ValueName" ValueField="ParameterValueID" StoreID="StoreSinglePavilionVisible" QueryMode="Local" />
                                </Editor>
                            </ext:Column>
    
                            <ext:NumberColumn ID="colSingleStarLength" runat="server" DataIndex="StarLength" Text="Star Length" Sortable="true" Hideable="true" Align="Right" >
                                <Editor>
                                    <ext:NumberField ID="txtSingleStarLength" runat="server" MinValue="0" DecimalPrecision="2" />
                                </Editor>
                            </ext:NumberColumn>
    
                            <ext:NumberColumn ID="colSingleLengthHalvesCrPercent" runat="server" DataIndex="LengthHalvesCrPercent" Text="Length Halves Crown %" Sortable="true" Hideable="true" Align="Right" >
                                <Editor>
                                    <ext:NumberField ID="txtSingleLengthHalvesCrPercent" runat="server" MinValue="0" DecimalPrecision="2" />
                                </Editor>
                            </ext:NumberColumn>
    
                            <ext:NumberColumn ID="colSingleLengthHalvesPavPercent" runat="server" DataIndex="LengthHalvesPavPercent" Text="Length Halves Pavilion %" Sortable="true" Hideable="true" Align="Right" >
                                <Editor>
                                    <ext:NumberField ID="txtSingleLengthHalvesPavPercent" runat="server" MinValue="0" DecimalPrecision="2" />
                                </Editor>
                            </ext:NumberColumn>
    
                            <ext:NumberColumn ID="colSinglelowerHalf" runat="server" DataIndex="lowerHalf" Text="Lower Half" Sortable="true" Hideable="true" Align="Right" >
                                <Editor>
                                    <ext:NumberField ID="txtSinglelowerHalf" runat="server" MinValue="0" DecimalPrecision="2" />
                                </Editor>
                            </ext:NumberColumn>
    
                            <ext:NumberColumn ID="colSingleLowerHlafPercent" runat="server" DataIndex="LowerHlafPercent" Text="Lower Half %" Sortable="true" Hideable="true" Align="Right" >
                                <Editor>
                                    <ext:NumberField ID="txtSingleLowerHlafPercent" runat="server" MinValue="0" DecimalPrecision="2" />
                                </Editor>
                            </ext:NumberColumn>
    
                            <ext:Column ID="colSingleBrown" runat="server" DataIndex="Brown" Text="Brown" Align="Center">
                                <Renderer Handler="return CommanRenderer(value,App.StoreSingleBrown,'ValueName')" />
                                <Editor>
                                    <ext:ComboBox ID="cmbSingleBrown" runat="server" ForceSelection="true" DisplayField="ValueName" ValueField="ParameterValueID" StoreID="StoreSingleBrown" QueryMode="Local" />
                                </Editor>
                            </ext:Column>
    
                            <ext:Column ID="colSingleNatts" runat="server" DataIndex="Natts" Text="Natts" Align="Center">
                                <Renderer Handler="return CommanRenderer(value,App.StoreSingleNatts,'ValueName')" />
                                <Editor>
                                    <ext:ComboBox ID="txtSingleNatts" runat="server" ForceSelection="true" DisplayField="ValueName" ValueField="ParameterValueID" StoreID="StoreSingleNatts" QueryMode="Local" />
                                </Editor>
                            </ext:Column>
    
                            <ext:Column ID="colSingleHeartArrow" runat="server" DataIndex="HeartArrow" Text="H&A" Align="Center">
                                <Renderer Handler="return CommanRenderer(value,App.StoreSingleHeartArrow,'ValueName')" />
                                <Editor>
                                    <ext:ComboBox ID="txtSingleHeartArrow" runat="server" ForceSelection="true" DisplayField="ValueName" ValueField="ParameterValueID" StoreID="StoreSingleHeartArrow" QueryMode="Local" />
                                </Editor>
                            </ext:Column>
    
                            <ext:NumberColumn ID="colSingleDiameter" runat="server" DataIndex="Diameter" Text="Diameter" Sortable="true" Hideable="true" Align="Right" >
                                <Editor>
                                    <ext:NumberField ID="txtSingleDiameter" runat="server" MinValue="0" DecimalPrecision="2" />
                                </Editor>
                            </ext:NumberColumn>
    
                            <ext:NumberColumn ID="colSingleDiameterMin" runat="server" DataIndex="DiameterMin" Text="Diameter Min" Sortable="true" Hideable="true" Align="Right" >
                                <Editor>
                                    <ext:NumberField ID="txtSingleDiameterMin" runat="server" MinValue="0" DecimalPrecision="2" />
                                </Editor>
                            </ext:NumberColumn>
    
                            <ext:NumberColumn ID="colSingleDiameterMax" runat="server" DataIndex="DiameterMax" Text="Diameter Max" Sortable="true" Hideable="true" Align="Right" >
                                <Editor>
                                    <ext:NumberField ID="txtSingleDiameterMax" runat="server" MinValue="0" DecimalPrecision="2" />
                                </Editor>
                            </ext:NumberColumn>
    
                            <ext:NumberColumn ID="colSingleDiameteravg" runat="server" DataIndex="Diameteravg" Text="Diameter Avg" Sortable="true" Hideable="true" Align="Right" >
                                <Editor>
                                    <ext:NumberField ID="txtSingleDiameteravg" runat="server" MinValue="0" DecimalPrecision="2" />
                                </Editor>
                            </ext:NumberColumn>
    
                            <ext:Column ID="colSingleGirdle" runat="server" DataIndex="Girdle" Text="Girdle" Align="Center">
                                <Renderer Handler="return CommanRenderer(value,App.StoreSingleGirdle,'ValueName')" />
                                <Editor>
                                    <ext:ComboBox ID="cmbSingleGirdle" runat="server" ForceSelection="true" DisplayField="ValueName" ValueField="ParameterValueID" StoreID="StoreSingleGirdle" QueryMode="Local" />
                                </Editor>
                            </ext:Column>
    
                            <ext:NumberColumn ID="colSingleGirdleMin" runat="server" DataIndex="GirdleMin" Text="Girdle Min" Sortable="true" Hideable="true" Align="Right" >
                                <Editor>
                                    <ext:NumberField ID="txtSingleGirdleMin" runat="server" MinValue="0" DecimalPrecision="2" />
                                </Editor>
                            </ext:NumberColumn>
    
                            <ext:NumberColumn ID="colSingleGirdleMax" runat="server" DataIndex="GirdleMax" Text="Girdle Max" Sortable="true" Hideable="true" Align="Right" >
                                <Editor>
                                    <ext:NumberField ID="txtSingleGirdleMax" runat="server" MinValue="0" DecimalPrecision="2" />
                                </Editor>
                            </ext:NumberColumn>
    
                            <ext:NumberColumn ID="colSingleGirdlAvg" runat="server" DataIndex="GirdlAvg" Text="Girdle Avg" Sortable="true" Hideable="true" Align="Right" >
                                <Editor>
                                    <ext:NumberField ID="txtSingleGirdlAvg" runat="server" MinValue="0" DecimalPrecision="2" />
                                </Editor>
                            </ext:NumberColumn>
    
                            <ext:NumberColumn ID="colSingleGirdlePercent" runat="server" DataIndex="GirdlePercent" Text="Girdle %" Sortable="true" Hideable="true" Align="Right" >
                                <Editor>
                                    <ext:NumberField ID="txtSingleGirdlePercent" runat="server" MinValue="0" DecimalPrecision="2" />
                                </Editor>
                            </ext:NumberColumn>
    
                            <ext:Column ID="colSingleGirdleInclusion" runat="server" DataIndex="GirdleInclusion" Text="Girdle Inclusion" Align="Center">
                                <Renderer Handler="return CommanRenderer(value,App.StoreSingleGirdleInclusion,'ValueName')" />
                                <Editor>
                                    <ext:ComboBox ID="cmbSingleGirdleInclusion" runat="server" ForceSelection="true" DisplayField="ValueName" ValueField="ParameterValueID" StoreID="StoreSingleGirdleInclusion" QueryMode="Local" />
                                </Editor>
                            </ext:Column>
    
                            <ext:Column ID="colSingleGirdleCondition" runat="server" DataIndex="GirdleCondition" Text="Girdle Condition" Align="Center">
                                <Renderer Handler="return CommanRenderer(value,App.StoreSingleGirdleCondition,'ValueName')" />
                                <Editor>
                                    <ext:ComboBox ID="cmbSingleGirdleCondition" runat="server" ForceSelection="true" DisplayField="ValueName" ValueField="ParameterValueID" StoreID="StoreSingleGirdleCondition" QueryMode="Local" />
                                </Editor>
                            </ext:Column>
    
                            <ext:Column ID="colSingleKeyToSymbol" runat="server" DataIndex="KeyToSymbol" Text="Key To Symbol" Sortable="true" Hideable="true">
                                <Editor>
                                    <ext:TextField ID="txtSingleKeyToSymbol" runat="server" />
                                </Editor>
                            </ext:Column>
    
                            <ext:Column ID="colSingleComments1" runat="server" DataIndex="Comments1" Text="Comment1" Sortable="true" Hideable="true">
                                <Editor>
                                    <ext:TextField ID="txtSingleComments1" runat="server" />
                                </Editor>
                            </ext:Column>
    
                            <ext:Column ID="colSingleComments2" runat="server" DataIndex="Comments2" Text="Comment2" Sortable="true" Hideable="true">
                                <Editor>
                                    <ext:TextField ID="txtSingleComments2" runat="server" />
                                </Editor>
                            </ext:Column>
    
                            <ext:Column ID="colSingleComments3" runat="server" DataIndex="Comments3" Text="Comment3" Sortable="true" Hideable="true">
                                <Editor>
                                    <ext:TextField ID="txtSingleComments3" runat="server" />
                                </Editor>
                            </ext:Column>
    
                            <ext:Column ID="colSingleReportComments" runat="server" DataIndex="ReportComments" Text="Report Comment" Sortable="true" Hideable="true">
                                <Editor>
                                    <ext:TextField ID="txtSingleReportComments" runat="server" />
                                </Editor>
                            </ext:Column>
    
                            <ext:Column ID="colSingleClarityStatus" runat="server" DataIndex="ClarityStatus" Text="Girdle Inclusion" Align="Center">
                                <Renderer Handler="return CommanRenderer(value,App.StoreSingleClarityStatus,'ValueName')" />
                                <Editor>
                                    <ext:ComboBox ID="cmbSingleClarityStatus" runat="server" ForceSelection="true" DisplayField="ValueName" ValueField="ParameterValueID" StoreID="StoreSingleClarityStatus" QueryMode="Local" />
                                </Editor>
                            </ext:Column>
    
                            <ext:Column ID="colSinglePainting" runat="server" DataIndex="Painting" Text="Painting" Align="Center">
                                <Renderer Handler="return CommanRenderer(value,App.StoreSinglePainting,'ValueName')" />
                                <Editor>
                                    <ext:ComboBox ID="cmbSinglePainting" runat="server" ForceSelection="true" DisplayField="ValueName" ValueField="ParameterValueID" StoreID="StoreSinglePainting" QueryMode="Local" />
                                </Editor>
                            </ext:Column>
    
                            <ext:Column ID="colSinglePaintingComments" runat="server" DataIndex="PaintingComments" Text="Painting Comments" Sortable="true" Hideable="true">
                                <Editor>
                                    <ext:TextField ID="txtSinglePaintingComments" runat="server" />
                                </Editor>
                            </ext:Column>
    
                            <ext:NumberColumn ID="colSingleStarPercent" runat="server" DataIndex="StarPercent" Text="Star %" Sortable="true" Hideable="true" Align="Right" >
                                <Editor>
                                    <ext:NumberField ID="txtSingleStarPercent" runat="server" MinValue="0" DecimalPrecision="2" />
                                </Editor>
                            </ext:NumberColumn>
    
                            <ext:Column ID="colSingleColorTing" runat="server" DataIndex="ColorTing" Text="Color Ting" Align="Center">
                                <Renderer Handler="return CommanRenderer(value,App.StoreSingleColorTing,'ValueName')" />
                                <Editor>
                                    <ext:ComboBox ID="cmbSingleColorTing" runat="server" ForceSelection="true" DisplayField="ValueName" ValueField="ParameterValueID" StoreID="StoreSingleColorTing" QueryMode="Local" />
                                </Editor>
                            </ext:Column>
    
                            <ext:Column ID="colSingleTingRemark" runat="server" DataIndex="TingRemark" Text="Ting Remark" Sortable="true" Hideable="true">
                                <Editor>
                                    <ext:TextField ID="txtSingleTingRemark" runat="server" />
                                </Editor>
                            </ext:Column>
    
                            <ext:Column ID="colSingleFolurTing" runat="server" DataIndex="FolurTing" Text="Flour Ting" Align="Center">
                                <Renderer Handler="return CommanRenderer(value,App.StoreSingleFolurTing,'ValueName')" />
                                <Editor>
                                    <ext:ComboBox ID="cmbSingleFolurTing" runat="server" ForceSelection="true" DisplayField="ValueName" ValueField="ParameterValueID" StoreID="StoreSingleFolurTing" QueryMode="Local" />
                                </Editor>
                            </ext:Column>
    
                            <ext:Column ID="colSingleMajorGS" runat="server" DataIndex="MajorGS" Text="MajorGS" Sortable="true" Hideable="true">
                                <Editor>
                                    <ext:TextField ID="txtSingleMajorGS" runat="server" />
                                </Editor>
                            </ext:Column>
    
                            <ext:Column ID="colSingleMinorGS" runat="server" DataIndex="MinorGS" Text="MinorGS" Sortable="true" Hideable="true">
                                <Editor>
                                    <ext:TextField ID="txtSingleMinorGS" runat="server" />
                                </Editor>
                            </ext:Column>
    
                            <ext:Column ID="colSingleFeather" runat="server" DataIndex="Feather" Text="Feather" Align="Center">
                                <Renderer Handler="return CommanRenderer(value,App.StoreSingleFeather,'ValueName')" />
                                <Editor>
                                    <ext:ComboBox ID="cmbSingleFeather" runat="server" ForceSelection="true" DisplayField="ValueName" ValueField="ParameterValueID" StoreID="StoreSingleFeather" QueryMode="Local" />
                                </Editor>
                            </ext:Column>
    
                            <ext:Column ID="colSingleExtraFacet" runat="server" DataIndex="ExtraFacet" Text="Extra Facet" Align="Center">
                                <Renderer Handler="return CommanRenderer(value,App.StoreSingleExtraFacet,'ValueName')" />
                                <Editor>
                                    <ext:ComboBox ID="cmbSingleExtraFacet" runat="server" ForceSelection="true" DisplayField="ValueName" ValueField="ParameterValueID" StoreID="StoreSingleExtraFacet" QueryMode="Local" />
                                </Editor>
                            </ext:Column>
    
                            <ext:Column ID="colSingleCavity" runat="server" DataIndex="Cavity" Text="Cavity" Align="Center">
                                <Renderer Handler="return CommanRenderer(value,App.StoreSingleCavity,'ValueName')" />
                                <Editor>
                                    <ext:ComboBox ID="txtSingleCavity" runat="server" ForceSelection="true" DisplayField="ValueName" ValueField="ParameterValueID" StoreID="StoreSingleCavity" QueryMode="Local" />
                                </Editor>
                            </ext:Column>
    
                            <ext:Column ID="colSingleFancyColor" runat="server" DataIndex="FancyColor" Text="Fancy Color" Align="Center">
                                <Renderer Handler="return CommanRenderer(value,App.StoreSingleFancyColor,'ValueName')" />
                                <Editor>
                                    <ext:ComboBox ID="cmbSingleFancyColor" runat="server" ForceSelection="true" DisplayField="ValueName" ValueField="ParameterValueID" StoreID="StoreSingleFancyColor" QueryMode="Local" />
                                </Editor>
                            </ext:Column>
    
                            <ext:Column ID="colSingleMilky" runat="server" DataIndex="Milky" Text="Milky" Align="Center">
                                <Renderer Handler="return CommanRenderer(value,App.StoreSingleMilky,'ValueName')" />
                                <Editor>
                                    <ext:ComboBox ID="cmbSingleMilky" runat="server" ForceSelection="true" DisplayField="ValueName" ValueField="ParameterValueID" StoreID="StoreSingleMilky" QueryMode="Local" />
                                </Editor>
                            </ext:Column>
    
                            <ext:Column ID="colSinglePolishFeatures" runat="server" DataIndex="PolishFeatures" Text="Polish Features" Align="Center">
                                <Renderer Handler="return CommanRenderer(value,App.StoreSinglePolishFeatures,'ValueName')" />
                                <Editor>
                                    <ext:ComboBox ID="cmbSinglePolishFeatures" runat="server" ForceSelection="true" DisplayField="ValueName" ValueField="ParameterValueID" StoreID="StoreSinglePolishFeatures" QueryMode="Local" />
                                </Editor>
                            </ext:Column>
    
                            <ext:Column ID="colSingleSymmetryFeatures" runat="server" DataIndex="SymmetryFeatures" Text="Symmetry Featuers" Align="Center">
                                <Renderer Handler="return CommanRenderer(value,App.StoreSingleSymmetryFeatures,'ValueName')" />
                                <Editor>
                                    <ext:ComboBox ID="cmbSingleSymmetryFeatures" runat="server" ForceSelection="true" DisplayField="ValueName" ValueField="ParameterValueID" StoreID="StoreSingleSymmetryFeatures" QueryMode="Local" />
                                </Editor>
                            </ext:Column>
    
                            <ext:Column ID="colSingleFlourColor" runat="server" DataIndex="FlourColor" Text="Flour Color" Align="Center">
                                <Renderer Handler="return CommanRenderer(value,App.StoreSingleFlourColor,'ValueName')" />
                                <Editor>
                                    <ext:ComboBox ID="cmbSingleFlourColor" runat="server" ForceSelection="true" DisplayField="ValueName" ValueField="ParameterValueID" StoreID="StoreSingleFlourColor" QueryMode="Local" />
                                </Editor>
                            </ext:Column>
    
                            <ext:Column ID="colSingleSyntheticIndicator" runat="server" DataIndex="SyntheticIndicator" Text="Synthetic Indicator" Sortable="true" Hideable="true">
                                <Editor>
                                    <ext:TextField ID="txtSingleSyntheticIndicator" runat="server" />
                                </Editor>
                            </ext:Column>
    
                            <ext:Column ID="colSinglePara1" runat="server" DataIndex="Para1" Text="Para1" Sortable="true" Hideable="true" Visible="false">
                                <Editor>
                                    <ext:TextField ID="txtSinglePara1" runat="server" />
                                </Editor>
                            </ext:Column>
    
                            <ext:Column ID="colSinglePara2" runat="server" DataIndex="Para2" Text="Para2" Sortable="true" Hideable="true" Visible="false">
                                <Editor>
                                    <ext:TextField ID="txtSinglePara2" runat="server" />
                                </Editor>
                            </ext:Column>
    
                            <ext:Column ID="colSinglePara3" runat="server" DataIndex="Para3" Text="Para3" Sortable="true" Hideable="true" Visible="false">
                                <Editor>
                                    <ext:TextField ID="txtSinglePara3" runat="server" />
                                </Editor>
                            </ext:Column>
    
                            <ext:Column ID="colSinglePara4" runat="server" DataIndex="Para4" Text="Para4" Sortable="true" Hideable="true" Visible="false">
                                <Editor>
                                    <ext:TextField ID="txtSinglePara4" runat="server" />
                                </Editor>
                            </ext:Column>
    
                            <ext:Column ID="colSinglePara5" runat="server" DataIndex="Para5" Text="Para5" Sortable="true" Hideable="true" Visible="false">
                                <Editor>
                                    <ext:TextField ID="txtSinglePara5" runat="server" />
                                </Editor>
                            </ext:Column>
    
                            <ext:Column ID="colSinglePara6" runat="server" DataIndex="Para6" Text="Para6" Sortable="true" Hideable="true" Visible="false">
                                <Editor>
                                    <ext:TextField ID="txtSinglePara6" runat="server" />
                                </Editor>
                            </ext:Column>
    
                            <ext:Column ID="colSinglePara7" runat="server" DataIndex="Para7" Text="Para7" Sortable="true" Hideable="true" Visible="false">
                                <Editor>
                                    <ext:TextField ID="txtSinglePara7" runat="server" />
                                </Editor>
                            </ext:Column>
    
                            <ext:Column ID="colSinglePara8" runat="server" DataIndex="Para8" Text="Para8" Sortable="true" Hideable="true" Visible="false">
                                <Editor>
                                    <ext:TextField ID="txtSinglePara8" runat="server" />
                                </Editor>
                            </ext:Column>
    
                            <ext:Column ID="colSinglePara9" runat="server" DataIndex="Para9" Text="Para9" Sortable="true" Hideable="true" Visible="false">
                                <Editor>
                                    <ext:TextField ID="txtSinglePara9" runat="server" />
                                </Editor>
                            </ext:Column>
    
                            <ext:Column ID="colSinglePara10" runat="server" DataIndex="Para10" Text="Para10" Sortable="true" Hideable="true" Visible="false">
                                <Editor>
                                    <ext:TextField ID="txtSinglePara10" runat="server" />
                                </Editor>
                            </ext:Column>
    
                            <ext:Column ID="ColSingleRemark" runat="server" DataIndex="Remark" Text="Remark" Sortable="true" Hideable="true" Visible="false">
                                <Editor>
                                    <ext:TextField ID="txtSingleRemark" runat="server" />
                                </Editor>
                            </ext:Column>
                        </Columns>
                    </ColumnModel>
                    <Plugins>
                        <ext:CellEditing ID="CellEditing2" runat="server">
                            <Listeners>
                                <%--<BeforeEdit Fn="beforeEditSingleDetail" />
                                <Edit Fn="editSingleDetail" />--%>
                                <%--<CancelEdit Fn="cancelEditSingleDetail" />--%>
                            </Listeners>
                        </ext:CellEditing>
                    </Plugins>
                    <Features>
                        <ext:Summary ID="Summary2" runat="server" />
                    </Features>
                    <BottomBar>
                        <%--<ext:PagingToolbar ID="SinglePaging" runat="server" IDMode="Static">
                            <Items>
                                <ext:ComboBox ID="cmbSinglePaging" runat="server" Width="80" IDMode="Static" />
                            </Items>
                        </ext:PagingToolbar>--%>
    
                    </BottomBar>
                </ext:GridPanel>
    
            </Items>
        </ext:FormPanel>
        <ext:FormPanel ID="total" runat="server">
            <Items>
                <ext:Panel ID="totalPanel" runat="server" Height="25">
                    <Items>
                        <ext:TextField ID="txtTotal" Text="Single Total :" runat="server" Width="1500" IDMode="Static" ReadOnly="true" />
                        <ext:TextField ID="txtSingleTotalCts" runat="server" IDMode="Static" Hidden="true" Text="0" />
                        <ext:TextField ID="txtSingleTotalFinalAmount" runat="server" IDMode="Static" Hidden="true" Text="0" />
                        <ext:TextField ID="txtSingleTotalRapAmount" runat="server" IDMode="Static" Hidden="true" Text="0" />
                    </Items>
                </ext:Panel>
            </Items>
        </ext:FormPanel>
        <ext:FormPanel ID="FormButtonPanel" runat="server" TitleCollapse="true" DefaultAnchor="100%" Anchor="100%" BodyBorder="1" BodyPadding="10" Frame="true" IDMode="Static" Layout="ColumnLayout">
            <Items>
                <ext:Panel ID="Panel1" runat="server" ColumnWidth="1" ButtonAlign="Right">
                    <Buttons>
                        <ext:Button ID="btnInsert" runat="server" Text="Insert" Icon="Add"
                            OnClientClick="if(App.FormStoneGrading.disabled)
                                                {
                                                    btnState = 'I';
                                                    #{btnSearch}.disable(true);
                                                    #{btnInsert}.disable(true);
                                                    #{btnRefresh}.disable(true);
                                                    #{btnDelete}.enable(true);
                                                    #{btnEdit}.hide();
                                                    #{btnCancel}.show();
                                                    App.FormStoneGrading.reset();
                                                    App.FormStoneGrading.setDisabled(false);
                                                    App.StoreSingleDetail.removeAll(); 
                                                    #{dtTransDate}.focus();
                                                    App.txtTotal.setValue(null);
                                                }
                                                ">
                        </ext:Button>
                        <ext:Button ID="btnEdit" runat="server" Text="Edit" Icon="ApplicationEdit"
                            OnClientClick="App.FormStoneGrading.setDisabled(false);
                                            #{dtTransDate}.focus();
                                            btnState = 'E';
                                            #{btnEdit}.hide();
                                            #{btnDelete}.enable(true);
                                            #{btnInsert}.disable(true);
                                            #{btnCancel}.show();
                                            #{btnSearch}.disable(true);
                                            #{btnRefresh}.disable(true);                                       
                                            btnSave_State() ">
                        </ext:Button>
                        <ext:Button ID="btnCancel" runat="server" Text="Cancel" Icon="Cancel"
                            OnClientClick="#{btnRefresh}.enable(true);
                                            #{btnSearch}.enable(true);
                                            #{btnRefresh}.disable(true);
                                            #{btnInsert}.enable(true);
                                            #{btnDelete}.disable(true);
                                            #{btnInsert}.enable(true);
                                            #{btnEdit}.show();
                                            #{btnCancel}.hide();
                                            App.FormStoneGrading.setDisabled(true);
                                            if (btnState == 'I'){
                                                            App.StoreSingleDetail.rejectChanges();
                                                            App.txtTotal.setValue(null);
                                                            App.FormStoneGrading.reset();
                                                            #{btnEdit}.disable(true);
                                                            
                                            }
                                            else if(btnState == 'E'){
                                                            App.StoreSingleDetail.rejectChanges();
                                                            
                                            }
                                            else if(btnState == 'S'){
                                                            App.FormStoneGrading.reset();
                                                            #{btnEdit}.disable(true);
                                                            
                                            }
                                            btnState = null;
                                            btnSave_State()"
                            IDMode="Static">
                        </ext:Button>
                        <ext:Button ID="btnSave" runat="server" Text="Save" Icon="Disk" FormBind="true" Disabled="true"
                            OnClientClick=" btnState = null;#{btnInsert}.enable(true);">
                            
                        </ext:Button>
                        <ext:Button ID="btnDelete" runat="server" Text="Delete" Icon="Delete" ClientIDMode="Static">
                            <Listeners>
                                <Click Handler="
                                                Ext.Msg.show({
                                                        title: 'User Master',
                                                        msg: 'Sure to Delete Grading Detail Of Selected Stone?',
                                                        buttons: { yes: 'Yes', no: 'No' },
                                                        icon: Ext.Msg.QUESTION,
                                                        fn: function (btn) {
                                                            if (btn == 'yes') {
                                                                #{GridSingleDetail}.deleteSelected();
                                                            }
                                                        }
                                                    });
                                                " />
                            </Listeners>
                        </ext:Button>
                        <ext:Button ID="btnSearch" runat="server" Text="Search" Icon="Find" ClientIDMode="Static">
                            <Listeners>
                                <Click Handler="btnState = 'S';
                                            #{btnEdit}.hide();
                                            #{btnCancel}.show();
                                            #{btnSearch}.disable(true);
                                            #{btnInsert}.enable(true);
                                            #{btnRefresh}.enable(true);
                                            
                                            #{btnDelete}.disable(true);
                                            #{btnInsert}.disable(true); 
                                            App.FormStoneGrading.reset(); 
                                            App.FormStoneGrading.setDisabled(false);
                                            App.StoreSingleDetail.removeAll();
                                            App.StoreSingleDetail.commitChanges();
                                            #{dtTransDate}.focus();
                                            btnSave_State();" />
                            </Listeners>
                        </ext:Button>
                        <ext:Button ID="btnRefresh" runat="server" Text="Refresh" Icon="ArrowRefresh" OnClientClick="#{btnInsert}.enable(true);" Disabled="true">
                            
    
                        </ext:Button>
                    </Buttons>
                </ext:Panel>
            </Items>
        </ext:FormPanel>
        <ext:KeyMap ID="KeyMap1" runat="server" Target="={Ext.isGecko ? Ext.getDoc() : Ext.getBody()}">
            <Binding>
                <ext:KeyBinding Handler="btnInsert.click();" Ctrl="true" Alt="true">
                    <Keys>
                        <ext:Key Code="I" />
                    </Keys>
                </ext:KeyBinding>
            </Binding>
            <Binding>
                <ext:KeyBinding Handler="btnEdit.click();" Ctrl="true" Alt="true">
                    <Keys>
                        <ext:Key Code="E">
                        </ext:Key>
                    </Keys>
                </ext:KeyBinding>
            </Binding>
            <Binding>
                <ext:KeyBinding Handler="btnCancel.click();" Ctrl="true" Alt="true">
                    <Keys>
                        <ext:Key Code="C">
                        </ext:Key>
                    </Keys>
                </ext:KeyBinding>
            </Binding>
            <Binding>
                <ext:KeyBinding Handler="btnSave.focus(); btnSave.click();" Ctrl="true" Alt="true">
                    <Keys>
                        <ext:Key Code="S">
                        </ext:Key>
                    </Keys>
                </ext:KeyBinding>
            </Binding>
            <Binding>
                <ext:KeyBinding Handler="btnDelete.click();" Ctrl="true" Alt="true">
                    <Keys>
                        <ext:Key Code="D">
                        </ext:Key>
                    </Keys>
                </ext:KeyBinding>
            </Binding>
            <Binding>
                <ext:KeyBinding Handler="btnSearch.click();" Ctrl="true" Alt="true">
                    <Keys>
                        <ext:Key Code="F">
                        </ext:Key>
                    </Keys>
                </ext:KeyBinding>
            </Binding>
            <Binding>
                <ext:KeyBinding Handler="btnRefresh.click();" Ctrl="true" Alt="true">
                    <Keys>
                        <ext:Key Code="R">
                        </ext:Key>
                    </Keys>
                </ext:KeyBinding>
            </Binding>
        </ext:KeyMap>
            </form>
    </body>
    </html>
    Thanks
    Shailesh
  6. #6
    There is no any row in the GridPanel. How should I edit a cell?
  7. #7
    Sorry forgot to give you codebehind
    And one more thing, I have to attached 3 xml file for data which will assign to gridpanel, but I was unable to upload .xml or .zip file. How can I give you that files?

    Here it is
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using Ext.Net;
    using System.Data;
    using System.Reflection;
    
    namespace TTDesign.UI.Modules.TACC
    {
        public partial class StoneGrading : System.Web.UI.Page
        {
            public T CreateItem<T>(DataRow row)
            {
                string columnName;
                T obj = default(T);
                if (row != null)
                {
                    obj = Activator.CreateInstance<T>();
                    foreach (DataColumn column in row.Table.Columns)
                    {
                        columnName = column.ColumnName;
                        //Get property with same columnName
                        PropertyInfo prop = obj.GetType().GetProperty(columnName);
                        try
                        {
                            //Get value for the column
                            object value = (row[columnName].GetType() == typeof(DBNull))
                            ? null : row[columnName];
                            //Set property value
                            prop.SetValue(obj, value, null);
                        }
                        catch
                        {
                            throw;
                            //Catch whatever here
                        }
                    }
                }
                return obj;
            }
    
            public List<T> ConvertTo<T>(IEnumerable<DataRow> rows)
            {
                List<T> list = null;
                if (rows != null)
                {
                    list = new List<T>();
                    foreach (DataRow row in rows)
                    {
                        T item = this.CreateItem<T>(row);
                        list.Add(item);
                    }
                }
                return list;
            }
    
            
                protected void Page_Load(object sender, EventArgs e)
            {
                try
                {
                    if (!X.IsAjaxRequest)
                    {
                        
    
                        #region single combo bind
     //                   StoreSingleDetail.PageSize = Helper.DefaultGridPageSize;
                        DataTable dtSingleDetail = new DataTable();
                        dtSingleDetail.ReadXml("F:\\Temp\\StoneTransCollection.xml");
                        
                        StoreSingleDetail.DataSource = dtSingleDetail.AsEnumerable().AsDataView();// TTSalesManager.StoneTransCollections.Where(x => x.CollectionID == -1);
                        StoreSingleDetail.DataBind();
    
                        DataTable dtLab = new DataTable();
                        dtLab.ReadXml("F:\\Temp\\Lab.xml");
    
                        StoreLabObjID.DataSource = dtLab.AsEnumerable();
                        StoreLabObjID.DataBind();
    
                        //var parameterValue = (from a in TTSalesManager.ParameterValueMsts.AsEnumerable()
                        //                      from b in TTSalesManager.ParameterMsts.AsEnumerable()
                        //                      where a.ParameterID == b.ParameterID
                        //                            && b.ValueType == "T"
                        //                      select new { ParameterValueID = a.ParameterValueID, ValueName = a.ValueName, SourceColumnName = b.SourceColumnName,NumOrd = a.NumOrd }).ToList();
                        DataTable dtParaValue = new DataTable();
                        dtParaValue.ReadXml("F:\\Temp\\Paravalue.xml");
                        IEnumerable<DataRow> rows = dtParaValue.AsEnumerable();
                        List<ParamValue> parameterValue = new List<ParamValue>();
                        if (rows != null)
                        {
                            parameterValue = new List<ParamValue>();
                            foreach (DataRow row in rows)
                            {
                                ParamValue item = this.CreateItem<ParamValue>(row);
                                parameterValue.Add(item);
                            }
                        }
    
                        StoreSingleShapeID.DataSource = parameterValue.Where(x => x.SourceColumnName == "Shape").ToList().OrderBy(x => x.NumOrd).ToList();
                        StoreSingleShapeID.DataBind();
    
                        StoreSingleColorID.DataSource = parameterValue.Where(x => x.SourceColumnName == "Color").ToList().OrderBy(x => x.NumOrd).ToList(); ;
                        StoreSingleColorID.DataBind();
    
                        StoreSingleClarityID.DataSource = parameterValue.Where(x => x.SourceColumnName == "Clarity").ToList().OrderBy(x => x.NumOrd).ToList(); ;
                        StoreSingleClarityID.DataBind();
    
                        StoreSingleCutID.DataSource = parameterValue.Where(x => x.SourceColumnName == "Cut").ToList().OrderBy(x => x.NumOrd).ToList(); ;
                        StoreSingleCutID.DataBind();
    
                        StoreSinglePolishID.DataSource = parameterValue.Where(x => x.SourceColumnName == "Polish").ToList().OrderBy(x => x.NumOrd).ToList(); ;
                        StoreSinglePolishID.DataBind();
    
                        StoreSingleSymmetryID.DataSource = parameterValue.Where(x => x.SourceColumnName == "Symm").ToList().OrderBy(x => x.NumOrd).ToList(); ;
                        StoreSingleSymmetryID.DataBind();
    
                        StoreSingleFlourID.DataSource = parameterValue.Where(x => x.SourceColumnName == "Flour").ToList().OrderBy(x => x.NumOrd).ToList(); ;
                        StoreSingleFlourID.DataBind();
    
                        StoreSingleLusterID.DataSource = parameterValue.Where(x => x.SourceColumnName == "Luster").ToList().OrderBy(x => x.NumOrd).ToList(); ;
                        StoreSingleLusterID.DataBind();
    
                        StoreSingleProp.DataSource = parameterValue.Where(x => x.SourceColumnName == "Prop").ToList().OrderBy(x => x.NumOrd).ToList(); ;
                        StoreSingleProp.DataBind();
    
                        StoreSingleCuletSize.DataSource = parameterValue.Where(x => x.SourceColumnName == "CuletSize").ToList().OrderBy(x => x.NumOrd).ToList(); ;
                        StoreSingleCuletSize.DataBind();
    
                        StoreSingleTableInclusion.DataSource = parameterValue.Where(x => x.SourceColumnName == "TblInclusion").ToList().OrderBy(x => x.NumOrd).ToList(); ;
                        StoreSingleTableInclusion.DataBind();
    
                        StoreSingleOpenInclusion.DataSource = parameterValue.Where(x => x.SourceColumnName == "OpInclusion").ToList().OrderBy(x => x.NumOrd).ToList(); ;
                        StoreSingleOpenInclusion.DataBind();
    
                        StoreSingleCrownInclusion.DataSource = parameterValue.Where(x => x.SourceColumnName == "CrnInclusion").ToList().OrderBy(x => x.NumOrd).ToList(); ;
                        StoreSingleCrownInclusion.DataBind();
    
                        StoreSinglePavilionInclusion.DataSource = parameterValue.Where(x => x.SourceColumnName == "PavInclusion").ToList().OrderBy(x => x.NumOrd).ToList(); ;
                        StoreSinglePavilionInclusion.DataBind();
    
                        StoreSinglePavilionVisible.DataSource = parameterValue.Where(x => x.SourceColumnName == "PavVisible").ToList().OrderBy(x => x.NumOrd).ToList(); ;
                        StoreSinglePavilionVisible.DataBind();
    
                        StoreSingleBrown.DataSource = parameterValue.Where(x => x.SourceColumnName == "Brown").ToList().OrderBy(x => x.NumOrd).ToList(); ;
                        StoreSingleBrown.DataBind();
    
                        StoreSingleNatts.DataSource = parameterValue.Where(x => x.SourceColumnName == "Natts").ToList().OrderBy(x => x.NumOrd).ToList(); ;
                        StoreSingleNatts.DataBind();
    
                        StoreSingleHeartArrow.DataSource = parameterValue.Where(x => x.SourceColumnName == "HA").ToList().OrderBy(x => x.NumOrd).ToList(); ;
                        StoreSingleHeartArrow.DataBind();
    
                        StoreSingleGirdle.DataSource = parameterValue.Where(x => x.SourceColumnName == "Girdle").ToList().OrderBy(x => x.NumOrd).ToList(); ;
                        StoreSingleGirdle.DataBind();
    
                        StoreSingleGirdleInclusion.DataSource = parameterValue.Where(x => x.SourceColumnName == "GirInclusion").ToList().OrderBy(x => x.NumOrd).ToList(); ;
                        StoreSingleGirdleInclusion.DataBind();
    
                        StoreSingleGirdleCondition.DataSource = parameterValue.Where(x => x.SourceColumnName == "GirCondition").ToList().OrderBy(x => x.NumOrd).ToList(); ;
                        StoreSingleGirdleCondition.DataBind();
    
                        StoreSingleClarityStatus.DataSource = parameterValue.Where(x => x.SourceColumnName == "ClarityStatus").ToList().OrderBy(x => x.NumOrd).ToList(); ;
                        StoreSingleClarityStatus.DataBind();
    
                        StoreSinglePainting.DataSource = parameterValue.Where(x => x.SourceColumnName == "Painting").ToList().OrderBy(x => x.NumOrd).ToList(); ;
                        StoreSinglePainting.DataBind();
    
                        StoreSingleColorTing.DataSource = parameterValue.Where(x => x.SourceColumnName == "ColorTing").ToList().OrderBy(x => x.NumOrd).ToList(); ;
                        StoreSingleColorTing.DataBind();
    
                        StoreSingleFolurTing.DataSource = parameterValue.Where(x => x.SourceColumnName == "FlourTing").ToList().OrderBy(x => x.NumOrd).ToList(); ;
                        StoreSingleFolurTing.DataBind();
    
                        StoreSingleFeather.DataSource = parameterValue.Where(x => x.SourceColumnName == "Feather").ToList().OrderBy(x => x.NumOrd).ToList(); ;
                        StoreSingleFeather.DataBind();
    
                        StoreSingleExtraFacet.DataSource = parameterValue.Where(x => x.SourceColumnName == "ExtraFacet").ToList().OrderBy(x => x.NumOrd).ToList(); ;
                        StoreSingleExtraFacet.DataBind();
    
                        StoreSingleCavity.DataSource = parameterValue.Where(x => x.SourceColumnName == "Cavity").ToList().OrderBy(x => x.NumOrd).ToList(); ;
                        StoreSingleCavity.DataBind();
    
                        StoreSingleFancyColor.DataSource = parameterValue.Where(x => x.SourceColumnName == "FancyColor").ToList().OrderBy(x => x.NumOrd).ToList(); ;
                        StoreSingleFancyColor.DataBind();
    
                        StoreSingleMilky.DataSource = parameterValue.Where(x => x.SourceColumnName == "Milky").ToList().OrderBy(x => x.NumOrd).ToList(); ;
                        StoreSingleMilky.DataBind();
    
                        StoreSinglePolishFeatures.DataSource = parameterValue.Where(x => x.SourceColumnName == "PolFeatures").ToList().OrderBy(x => x.NumOrd).ToList(); ;
                        StoreSinglePolishFeatures.DataBind();
    
                        StoreSingleSymmetryFeatures.DataSource = parameterValue.Where(x => x.SourceColumnName == "SymmFeatures").ToList().OrderBy(x => x.NumOrd).ToList(); ;
                        StoreSingleSymmetryFeatures.DataBind();
    
                        StoreSingleFlourColor.DataSource = parameterValue.Where(x => x.SourceColumnName == "SymFlourColormFeatures").ToList().OrderBy(x => x.NumOrd).ToList(); ;
                        StoreSingleFlourColor.DataBind();
    
                        #endregion
    
                        btnEdit.Disable(true);
                        btnSave.Disable(true);
                        btnDelete.Disable(true);
                        btnCancel.Hide();
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
            
        }
        public class ParamValue
        {
            long parameterValueID{get;set;} 
            string valueName{get;set;} 
            string sourceColumnName{get;set;}
            decimal numOrd { get; set; }
            public long ParameterValueID
            {
                get { return parameterValueID; }
                set { parameterValueID = value; }
            }
            public string ValueName
            {
                get { return valueName; }
                set { valueName = value; }
            }
            public string SourceColumnName
            {
                get { return sourceColumnName; }
                set { sourceColumnName = value; }
            }
            public decimal NumOrd
            {
                get { return numOrd; }
                set { numOrd = value; }
            }
    
    
        }
        
    }
    Attached Files
  8. #8
    Hello!

    I think you missed one more XML file: StoneTransCollection.xml
  9. #9
    Hi,

    Yes I have told you in previous post that I am unable to upload .xml file(520 kb size). How can give you?

    Thanks
    Shailesh
  10. #10
    I think few rows of data will be enough to reproduce the problem so you can truncate XML file.
Page 1 of 2 12 LastLast

Similar Threads

  1. Replies: 7
    Last Post: Jan 05, 2016, 11:35 PM
  2. [CLOSED] [#609] Ext.grid.feature.Summary bug
    By stratadev in forum 2.x Legacy Premium Help
    Replies: 2
    Last Post: Dec 13, 2014, 8:29 PM
  3. [CLOSED] Summary Feature next to a CheckColumn
    By Peter.Treier in forum 2.x Legacy Premium Help
    Replies: 3
    Last Post: Aug 11, 2014, 12:14 PM
  4. Replies: 3
    Last Post: Feb 17, 2013, 9:38 AM
  5. Replies: 1
    Last Post: Nov 12, 2012, 2:29 PM

Posting Permissions