2012-02-13 7 views
6

ठीक है, मैं डेटाटेबल्स के उपयोग के लिए एक छोटी परियोजना पर काम कर रहा हूं। इसकी एक jQuery ग्रिड प्लगइन और Ive अब कार्यक्षमता के रूप में काम कर रहे अधिकांश कार्यक्षमता मिल गया है। एकमात्र चीज जिसे मैं अपने सिर को लपेटने के लिए प्रतीत नहीं कर रहा हूं, वह एजेक्स इनलाइन संपादन पर ग्रिड रीफ्रेश कर रहा है।jQuery डेटाटेबल्स, अद्यतन के बाद ग्रिड रीफ्रेश करें (सर्वर-साइड प्रसंस्करण)

<script type="text/javascript" charset="utf-8"> 
    $(document).ready(function() { 

     var oTable = $('#example').dataTable({ 

      "bJQueryUI": true, 
      "bProcessing": true, 
      "sAjaxSource": "/test/server_processing.php", 
      "sPaginationType": "full_numbers", 
      "aoColumns": [ { "bVisible": false }, 
     null, 
     null, 
     null 
    ] 
     }).makeEditable({ 
      sAddURL: "AddData.php", 
      sAddHttpMethod: "GET", 
      sDeleteHttpMethod: "GET", 
      sDeleteURL: "DeleteData.php", 
      sUpdateURL: "UpdateData.php", 

      oAddNewRowButtonOptions: { label: "Add...", 
       icons: {primary:'ui-icon-plus'} 
      }, 
      oDeleteRowButtonOptions: { label: "Remove", 
       icons: {primary:'ui-icon-trash'} 
      }, 

      oAddNewRowFormOptions: {  
       title: 'New Toll Free number', 
       show: "blind", 
       hide: "explode", 
       modal: true 
      }, 
      sAddDeleteToolbarSelector: ".dataTables_length"        
     }); 
}); 
</script> 

यह मेरा updatedata.php फ़ाइल

$editedColumn = $_POST['columnId']; 
$editedValue = $_POST['value']; 
$id = $_POST['id']; 

if ($editedColumn == '1') { 
    $sql = "update Main set name='$editedValue' where id='$id'";      
} elseif ($editedColumn == '2') { 
    $sql = "update Main set dn='$editedValue' where id='$id'";     
} elseif ($editedColumn == '3') { 
    $sql = "update Main set dn1='$editedValue' where id='$id'";     
} 
/* Update a record using information about id, columnName (property 
of the object or column in the table) and value that should be 
set */ 
$sql2 = "select name from Main where id = '$id';"; 

mysql_query($sql) or die(mysql_error()); 

echo "Update ok, reload to see changes"; 

मैं अंत में गूंज है, क्योंकि यह एक चेतावनी() कुछ जहां पॉप करने लगता है और गूंज भरता है कि जानकारी के साथ चेतावनी है।

मुझे एफएनडीआरओ जैसे ग्रिड को फिर से निकालने के कार्यों के बारे में पता है लेकिन मैं कैसे कार्यान्वित करना चाहता हूं, इस बारे में अनजान हूं।

+0

मैं आपके जैसा ही मिला :) और चाल का इंतजार कर रहा हूं। – sophie

+0

इंजेक्शन से सावधान रहें। –

उत्तर

-1

http://code.google.com/p/jquery-datatables-editable/wiki/EditCell#PHP_Example देखें अपने पृष्ठ को वही मान वापस करना चाहिए जैसा आपने अनुरोध से लिया है। अन्यथा कोई अन्य (अलग) मान त्रुटि संदेश के रूप में माना जाएगा, पॉपअप में प्रदर्शित और रीफ्रेश रद्द कर दिया जाएगा।

जोवन

+0

आपका क्या मतलब है? आपके पृष्ठ को वही मान वापस करना चाहिए जैसा आपने अनुरोध से लिया है। क्या आप इसके बारे में और अधिक स्पष्ट कर सकते हैं, क्योंकि मैं इस समस्या से भी मुलाकात की, और अभी भी उस पर फंस गया। धन्यवाद – sophie

0

ऊपर जवाब पर विस्तार करने के लिए, आप मूल्य तुम php फाइल करने के लिए भेज देना चाहिए।

तो अपने मामले में अपना मूल्य है कि मूल्य वापस

$editedValue = $_POST['value']; 

में है तो आप वापस आ जाएगी (गूंज)।

echo $editedValue; 

कि अन्य की तुलना में कुछ भी है, जिसके कारण आप अपनी सूचना दिखाई एक त्रुटि संदेश माना जाएगा, तो निम्नलिखित इस ग्रिड स्वचालित रूप से ताज़ा करना चाहिए द्वारा यह अब मानना ​​है कि वहाँ के रूप में कोई त्रुटि है।

सभी जानकारी ऊपर here

पाया जा सकता है एक तरफ ध्यान दें इस

$sql2 = "select name from Main where id = '$id';"; 

वापस जाने के लिए मूल्य के रूप में की जरूरत नहीं किया जाएगा जैसा कि पहले ही मौजूद है।

0
बजाय

...

पेज संदेश, क्यों यू कोड नहीं लिखते तो अद्यतन परिणाम के बाद डेटा को अद्यतन किया गया है स्क्रीन पर दिखाई देता पृष्ठ पुनः लोड करने ताज़ा करने के लिए पूछ रहा। ऐसा करने के लिए।

echo "<script>window.location='pageName.php'</script>"; 
+0

'window.location.reload()' –

-1

आप, इस तरह से आप कर सकते हैं अपने updatedata.php स्क्रिप्ट तालिका के भीतरी सामग्री बाहर गूंज नहीं बनाया जा सका, AJAX सफलता पर चलने निम्नलिखित

jQuery('TABLE#referencedTable').html(newData); 

यह तो अपनी मेज अद्यतन करेगा नवीनतम डेटा के साथ।

+1

तालिका डेटाटेबल्स प्लगइन द्वारा पॉप्युलेट की गई है, जिसे PHP द्वारा डेटा (संभवतः JSON के रूप में) परोसा जाता है। अद्यतन को ट्रिगर करने के लिए ओपी स्पष्ट रूप से डेटाटेबल्स में एपीआई की तलाश में है। –

0

सबसे पहले मुझे नहीं देख

"bServerSide": true 

कहीं भी निर्धारित किया है।

प्रयास करें जब आप आप प्रसंस्करण लौटना चाहिएsEcho चर (स्वतः DataTable करके अपने DataTable में जोड़ा जाना चाहिए) अनुरोध के साथ आया था serverside उपयोग कर रहे हैं oTable.fnDraw() या oTable.fnDraw(oTable.fnSettings())

साथ redrawing। अन्यथा रीफ्रेश कुछ भी नहीं करता है क्योंकि डेटाटेबल उम्मीद से अलग एसईको के साथ प्रतिक्रिया प्रतिक्रिया को अनदेखा करता है। dataTable debugger

0

आप एक बार फिर से ग्रिड को आबाद करने के लिए ajax कॉल क्यों फोन नहीं कर सकते हैं:

आप DataTables डिबग बुकमार्कलेट का उपयोग विन्यास की जाँच करें? प्रत्येक जोड़ने के बाद, ऑपरेशन हटाएं या अपडेट करें?

आप ऐसा कर सकते हैं, एक ही

$('#example').dataTable({ 

      "bJQueryUI": true, 
      "bProcessing": true, 
      "sAjaxSource": "/test/server_processing.php", 
      "sPaginationType": "full_numbers", 
      "aoColumns": [ { "bVisible": false }, 
     null, 
     null, 
     null 
    ] 
     }); 
1

कॉल करते समय एक घटना या कुछ और के आधार पर अपने DataTable के AJAX के डेटा को फिर से लोड करने के लिए, बस fnReloadAjax विधि का उपयोग की जरूरत है द्वारा। आप प्रलेखन here पा सकते हैं।

संबंधित मुद्दे