Hell again!
I don't completely understand things in javascript so I was hoping someone could answer this question.
The following code works great! And it is repeated on all 4 tables. I wanted to create a function for it and send the variables I need but that won't work for some reason. Here is the code I am talking about:
Works:
note that build_dropdowns is a function that will create teh drop downs based off the json data. Here is it's code:
Notice how this function needs the refName (like oTable or wTable) to call fnFilter etc... I couldn't figure out a way to get the instance of datatable based off the ID of the table.
So, I changed fnServerData to this:
I don't know the best solution. Is there a way to reference wTable dynamically?
When I pass wTable from fnServerData it says "wTable not defined" but if I hard code wTable into the build_dropdowns function within build_fnServerData it will work... Is this because getJSON is asyncronous so when getJSON is called the datatables object is created? Is there a way to dynamically get the datatable instance like $('#WO').thisInstanceOfDatatables? Should I pass a string (or have a global has value to convert) and use eval to use the correct variable name when it is needed?
Thanks for the help!
I don't completely understand things in javascript so I was hoping someone could answer this question.
The following code works great! And it is repeated on all 4 tables. I wanted to create a function for it and send the variables I need but that won't work for some reason. Here is the code I am talking about:
Works:
"fnServerData": function ( sSource, aoData, fnCallback ) {
/* ... additional variables ... */
$.getJSON( sSource, aoData, function (json) {
if(json.error == 'expired'){
timeoutLogoff();
}else{
/* Create the select elements on the first run */
if ( json.sEcho == 1 )
{
build_dropdowns('Assignments',json,oTable);
}
/* DataTables callback */
fnCallback(json)
}
} );
}
note that build_dropdowns is a function that will create teh drop downs based off the json data. Here is it's code:
function build_dropdowns(tableID, json, refName){
$("#"+tableID+" tfoot th.dropdown").each( function () {
index = refName.fnVisibleToColumnIndex($(this).index());
$(this).html(fnCreateSelect(json.select[index], index));
$('select', $(this)).change( function () {
refName.fnFilter( $(this).val(), refName.fnVisibleToColumnIndex($(this).parent().index() ));
} );
} );
}
Notice how this function needs the refName (like oTable or wTable) to call fnFilter etc... I couldn't figure out a way to get the instance of datatable based off the ID of the table.
So, I changed fnServerData to this:
//**in the global scope area at the top of the page**//
function build_fnServerData(table,refName,sSource, aoData,fnCallback){
$.getJSON( sSource, aoData, function (json) {
if(json.error == 'expired'){
timeoutLogoff();
}else{
if ( json.sEcho == 1 ) {
build_dropdowns(table,json,refName); // Create the select elements on the first run
}
return fnCallback(json)
}
} );
}
/* ... */
//**in the wTable datatable setup area**//
"fnServerData": function ( sSource, aoData, fnCallback ) {
build_fnServerData('WO',wTable,sSource, aoData,fnCallback);
}
I don't know the best solution. Is there a way to reference wTable dynamically?
When I pass wTable from fnServerData it says "wTable not defined" but if I hard code wTable into the build_dropdowns function within build_fnServerData it will work... Is this because getJSON is asyncronous so when getJSON is called the datatables object is created? Is there a way to dynamically get the datatable instance like $('#WO').thisInstanceOfDatatables? Should I pass a string (or have a global has value to convert) and use eval to use the correct variable name when it is needed?
Thanks for the help!