jQuery UI Widgets › Forums › Getting Started › Adding row to grid with 2 dropdowns from related tables
Tagged: addrow, angular 2 grid, angular grid, cascading ever present row, cascading everpresentrow, createEverPresentRowWidget, database, dropdown, ever present row, everpresentrow, grid, initeverpresentrowwidget, jquery grid, jqxgrid, update row, updaterow
This topic contains 1 reply, has 2 voices, and was last updated by Dimitar 7 years, 11 months ago.
-
Author
-
Hello, jqwidgets Team,
I have few questions about your grid.
This image shows what i’ve reaches so far.
This is the three tables that i’m using for this grid.
This pictures shows how i want to add row and the dropdown columns that i want to be loaded from database as the already added rows.
And the advanced thing that i want to achieve is:-
On adding or updating dropdown columnsp –
in this case Countries and Towns for example when changing country name the towns that are in this country should be shown only, and respectively when changing Town dropdown column to be shown only the country of the chosen town.
This picture shows what happening when I’m trying to update a row – the values of dropdown columns are clearing.
I’m using http://www.jqwidgets.com/jquery-widgets-demo/demos/jqxgrid/index.htm#demos/jqxgrid/everpresentrowaddremoveupdate.htm this sample for adding a new row.
I will post and the code of my View aswell. I’m using ASP.NET MVC if you think that the controller code should be changed i will post you my controller code.@*@model LogisticsEngineeringLTD.ViewModels.Employees.EmployeesTownsViewModel*@ @{ ViewBag.Title = "Worker"; Layout = "~/Views/Shared/_Layout.cshtml"; } <!DOCTYPE html> <html lang="en"> <head> <title id='Description'> This demo illustrates the basic functionality of the Grid plugin. The jQWidgets Grid plugin offers rich support for interacting with data, including paging, grouping and sorting. </title> <meta name="description" content="JavaScript Grid with rich support for Data Filtering, Paging, Editing, Sorting and Grouping" /> @*<link rel="stylesheet" href="~/Content/jqx.base.css" type="text/css" />*@ <script type="text/javascript"> $(document).ready(function () { var countrySource = { datatype: "json", datafields: [ { name: 'Id', type: 'string' }, { name: 'CountryName', type: 'string' }, ], id: 'Id', url: '/Employee/GetCountries', async: false }; var countryAdapter = new $.jqx.dataAdapter(countrySource, { autoBind: true }); var townSource = { datatype: "json", datafields: [ { name: 'Id', type: 'string' }, { name: 'TownName', type: 'string' }, ], id: 'Id', url: '/Employee/GetTowns', async: false }; var townAdapter = new $.jqx.dataAdapter(townSource, { autoBind: true }); var source = { datatype: "json", datafields: [ { name: 'Id', type: 'number' }, { name: 'EmployeeName', type: 'string' }, { name: 'Address', type: 'string' }, { name: 'Identitycard_num', type: 'string' }, { name: 'PhoneNumber', type: 'string' }, { name: 'Town', value: 'TownId', values: { source: townAdapter.records, value: 'Id', name: 'TownName' } }, { name: 'TownId', type: 'string' }, { name: 'Country', value: 'CountryId', values: { source: countryAdapter.records, value: 'Id', name: 'CountryName' } }, { name: 'CountryId', type: 'string' } ], id: 'Id', url: '/Employee/GetEmployees', }; var dataAdapter = new $.jqx.dataAdapter(source); var cellsrenderer = function (row, columnfield, value, defaulthtml, columnproperties, rowdata) { if (value < 20) { return '<span style="margin: 4px; float: ' + columnproperties.cellsalign + '; color: #ff0000;">' + value + '</span>'; } else { return '<span style="margin: 4px; float: ' + columnproperties.cellsalign + '; color: #008000;">' + value + '</span>'; } } // initialize jqxGrid $("#jqxgrid").jqxGrid( { width: 1000, source: dataAdapter, showtoolbar: true, theme: 'Darkness', pageSize: 5, sortable: true, filterable: true, pageable: true, editable: true, everpresentrowactions: "add update remove reset", showeverpresentrow: true, everpresentrowposition: "top", everpresentrowactions: "add update remove reset", //selectionmode: 'multiplecellsadvanced', selectionmode: 'singlecell', columns: [ { text: "Name", datafield: "EmployeeName" }, { text: "Address", datafield: "Address" }, { text: "Id Card Number", datafield: "Identitycard_num" }, { text: "Phone Number", datafield: "PhoneNumber" }, { text: 'Town', datafield: 'TownId', displayfield: 'Town', columntype: 'dropdownlist', width: 150 }, { text: 'Country', datafield: 'CountryId', displayfield: 'Country', columntype: 'dropdownlist', width: 150 }, ] }); }); </script> </head> <body class='default'> <div id='jqxWidget' style="font-size: 13px; font-family: Verdana; float: left;"> <div id="jqxgrid"> </div> </div> </body> </html>
Best regards,
Stanislav ChankovHello Stanislav,
- The demo Ever Present Row with Custom Widgets shows how to add a jqxDropDownList editor in an ever present row cell (as in your mock-up image).
- Using the createeverpresentrowwidget and/or initeverpresentrowwidget you can recreate the functionality presented in the demo Cascading ComboBoxes in order to achieve cascading ever present row dropdownlists.
- Your code seems fine. The demo you used as reference also works as expected. Are there any errors thrown in your browser’s console when trying to update a row? And do you need to post your changes back to the database? If so, please refer to the following help topic to learn how this can be done: http://www.jqwidgets.com/jquery-widgets-documentation/documentation/asp.net-integration/asp.net-grid-crud.htm.
Best Regards,
DimitarjQWidgets team
http://www.jqwidgets.com/ -
AuthorPosts
You must be logged in to reply to this topic.