This is a migrated thread and some comments may be shown as answers.

Grid - CompareValidator on NumericColumn (Edit)

1 Answer 79 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Garetjax
Top achievements
Rank 1
Garetjax asked on 02 Apr 2015, 02:36 PM
I need a comparevalidator on the grid for CDRQTY during edit at entering data; at present I'd like to be able to set the column listed below so, that the value will be less than or equal to the DQTY-DRQTY.   In this way the CDRQTY Entered Value can only be the remaining amount of the Ordered - Received.

Any help here would be greatly appreciated; of note since I am not doing an add the ItemCreated will not work...I am doing an Update.

<telerik:RadGrid ID="rgRequests" runat="server"  Skin="Metro" OnItemCreated="rgRequests_ItemCreated" OnUpdateCommand="rgRequests_UpdateCommand" OnNeedDataSource="rgRequests_NeedDataSource" AllowMultiRowEdit="true" MasterTableView-EditMode="Batch" MasterTableView-ClientDataKeyNames="DPO,DLINE,DQTY,DRQTY" AutoGenerateColumns="false">
    <MasterTableView CommandItemDisplay="TopAndBottom" CommandItemSettings-ShowAddNewRecordButton="false" CommandItemSettings-ShowRefreshButton="true" CommandItemSettings-ShowSaveChangesButton="true" CommandItemSettings-ShowCancelChangesButton="true">
        <Columns>
            <telerik:GridBoundColumn HeaderText="PO#" DataField="DPO" ReadOnly="true" />
            <telerik:GridBoundColumn HeaderText="LINE" DataField="DLINE" ReadOnly="true" />
            <telerik:GridBoundColumn HeaderText="Item" DataField="DITEM" ReadOnly="true" />
            <telerik:GridBoundColumn HeaderText="Ordered" DataField="DQTY" ReadOnly="true"/>
            <telerik:GridBoundColumn HeaderText="Received" DataField="DRQTY" ReadOnly="true" />
            <telerik:GridNumericColumn HeaderText="Received Today" DataField="CDRQTY" ColumnEditorID="CDRQTY" DataType="System.Int32" />
        </Columns>
    </MasterTableView>
</telerik:RadGrid>


1 Answer, 1 is accepted

Sort by
0
Konstantin Dikov
Telerik team
answered on 07 Apr 2015, 06:11 AM
Hi,

Can you please refer to the answer in the regular support ticket that you have opened for the same requirement (ticket ID: 922829).

To help others with similar requirement, below is the example from the support ticket:
<telerik:RadCodeBlock ID="RadCodeBlock1" runat="server">
    <script type="text/javascript">
        function pageLoad() {
            $find("<%=rgRequests.ClientID%>").get_masterTableView().get_dataItems();
        }
  
        function editCellValueChanging(sender, args) {
            var batchManager = sender.get_batchEditingManager();
              
            if (args.get_columnUniqueName() == "CDRQTY") {
                var newValue = args.get_editorValue();
                var dataItem = $find(args.get_row().id);
                var dqty = dataItem.get_cell("DQTY").innerHTML.trim();
                var drqty = dataItem.get_cell("DRQTY").innerHTML.trim();
                if (newValue > dqty - drqty) {
                    args.set_cancel(true);
                    alert("Value should be lower than or equal to " + (dqty - drqty));
                }
            }
        }
    </script>
</telerik:RadCodeBlock>
  
<telerik:RadGrid ID="rgRequests" runat="server" Skin="Metro" OnNeedDataSource="rgRequests_NeedDataSource" MasterTableView-EditMode="Batch" AutoGenerateColumns="false">
    <MasterTableView>
        <Columns>
            <telerik:GridBoundColumn HeaderText="Ordered" DataField="DQTY" ReadOnly="true" />
            <telerik:GridBoundColumn HeaderText="Received" DataField="DRQTY" ReadOnly="true" />
            <telerik:GridNumericColumn HeaderText="Received Today" DataField="CDRQTY" ColumnEditorID="CDRQTY" DataType="System.Int32" />
        </Columns>
    </MasterTableView>
    <ClientSettings>
        <ClientEvents OnBatchEditCellValueChanging="editCellValueChanging" />
    </ClientSettings>
</telerik:RadGrid>

And the code-behind:
protected void rgRequests_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
{
    DataTable table = new DataTable();
    table.Columns.Add("DQTY", typeof(int));
    table.Columns.Add("DRQTY", typeof(int));
    table.Columns.Add("CDRQTY", typeof(int));
    for (int i = 0; i < 5; i++)
    {
        table.Rows.Add(10, 5, 5);
    }
  
    (sender as RadGrid).DataSource = table;
}


If any other questions arise on this matter, I would suggest that we continue our conversation in the support ticket.


Best Regards,
Konstantin Dikov
Telerik
 

See What's Next in App Development. Register for TelerikNEXT.

 
Tags
Grid
Asked by
Garetjax
Top achievements
Rank 1
Answers by
Konstantin Dikov
Telerik team
Share this question
or