Include the client JavaScript & CSS libraries
<link rel="stylesheet" type="text/css" href="dbnetsuite.css.ashx" />
<script language="JavaScript" src="dbnetsuite.js.ashx"></script>
Client-side configuration script
<script>
jQuery(document).ready( init )
function init()
{
var dbnetedit1 = new DbNetEdit("dbnetedit1");
var dbnetedit2 = new DbNetEdit("dbnetedit2");
var dbnetedit3 = new DbNetEdit("dbnetedit3");
with (dbnetedit3)
{
connectionString = "SamplesDatabase"
fromPart = "[Order Details]"
setColumnExpressions("OrderID","ProductID","UnitPrice","Quantity");
setColumnProperty("OrderID","foreignKey",true)
setColumnProperty("ProductID","editControlType","TextBoxLookup");
setColumnProperty("ProductID","lookup","select productid, productname from products");
}
with (dbnetedit2)
{
connectionString = "SamplesDatabase"
fromPart = "Orders"
setColumnProperty("CustomerID","foreignKey",true)
setColumnProperty("OrderID","primaryKey",true)
setColumnProperty("EmployeeID","lookup","select employeeid, lastname + ',' + firstname from employees order by lastname, firstname");
setColumnProperty("ShipVia","lookup","select shipperid, companyname from shippers");
bind('onInitialized', initForm);
bind('onInsertInitialize', setDefaultValues);
bind('onToolbarConfigured', setCopyButtonState);
bind('onRecordInserted', copyOrderLines);
addLinkedControl(dbnetedit3);
}
with (dbnetedit1)
{
connectionString = "SamplesDatabase"
fromPart = "Customers"
setColumnExpressions("CustomerID","CompanyName","Address","City");
setColumnProperty("CustomerID","primaryKey",true)
addLinkedControl(dbnetedit2);
initialize()
}
}
function initForm(control) {
var btn = jQuery(control.addToolbarButton(3));
btn.html( jQuery(control.toolbarElement("insertRow")).html() ).attr("id","copyOrderBtn");
btn.find(".tool-button-text").html(" Copy Order");
btn.click( copySelectedRecord );
}
function setCopyButtonState(sender, args) {
var disabled = (sender.mode == "disabled" || sender.mode == "insert");
jQuery("#copyOrderBtn").attr("disabled",disabled ? "disabled" : "");
}
var copiedOrderID = null
var copyAdd = false
function copySelectedRecord()
{
copyAdd = true;
DbNetLink.components["dbnetedit2"].toolbarElement("insertRow").click();
}
function setDefaultValues(control)
{
copiedOrderID = null
if (!copyAdd)
return;
copiedOrderID = control.primaryKey.OrderID
var data = control.executeSingletonQuery("select * from orders where orderid = @orderid",{orderid : copiedOrderID});
for (key in data)
{
var inputControl = control.getInputControl(key);
if (!inputControl)
continue;
switch(key.toLowerCase())
{
case "orderid":
case "shippeddate":
case "requireddate":
break;
case "orderdate":
control.setInputControlValue(key, DbNetLink.Util.dateToString(new Date()));
break;
default:
control.setInputControlValue(key, data[key]);
break;
}
}
copyAdd = false;
return
}
function copyOrderLines(control, args){
var data = {"SourceOrderID" : copiedOrderID, "TargetOrderID" : args.id}
DbNetLink.Util.webMethod("CopyOrderLines", copyOrderLinesCallback, data);
}
function copyOrderLinesCallback(control){
DbNetLink.components["dbnetedit3"].loadData();
}
</script>
HTML markup
<table>
<tr>
<td style="vertical-align: top" Colspan="2">
<div>
<div class="legend">Customers</div>
<div id="dbnetedit1"></div>
</div>
</td>
</tr>
<tr>
<td style="vertical-align: top">
<div>
<div class="legend">Orders</div>
<div id="dbnetedit2"></div>
</div>
</td>
<td style="vertical-align: top">
<div>
<div class="legend">Order Details</div>
<div id="dbnetedit3"></div>
</div>
</td>
</tr>
</table>
Server-side code behind
[WebMethod]
///////////////////////////////////////////////////////////////
public static void CopyOrderLines(string SourceOrderID, string TargetOrderID)
///////////////////////////////////////////////////////////////
{
using (DbNetData Db = new DbNetData("SamplesDatabase"))
{
Db.Open();
QueryCommandConfig Query = new QueryCommandConfig();
Query.Sql = "select * from [order details] where orderid = " + Db.ParameterName("orderid");
Query.Params["orderid"] = SourceOrderID;
DataTable OrderLines = Db.GetDataTable(Query);
CommandConfig Insert = new CommandConfig();
Insert.Sql = "[order details]";
foreach( DataRow R in OrderLines.Rows)
{
Insert.Params["orderid"] = TargetOrderID;
Insert.Params["productid"] = R["productid"];
Insert.Params["unitprice"] = R["unitprice"];
Insert.Params["quantity"] = R["quantity"];
Insert.Params["discount"] = R["discount"];
Db.ExecuteInsert(Insert);
}
}
}