2009-04-28 9 views
5

मेरे पास एक एप्लिकेशन के भीतर एक्सेल स्प्रेडशीट के लिए एक आयात फ़ंक्शन है। यह फिलहाल FileUpload नियंत्रण का उपयोग करता है। मैं फ़ाइल अपलोड करता हूं, फिर उस फ़ाइल पर एक ऑपरेशन चलाता हूं। मैं ऑपरेशन के उपयोगकर्ता को सूचित करना चाहता हूं, और जो प्रतिशत किया गया है उसे सूचित करना चाहता हूं। मुझे लगता है कि मैं Excel स्प्रेडशीट से निकाली गई पंक्तियों की कुल संख्या ले सकता हूं, और लगातार विभाजित करता हूं क्योंकि मैं डेटाबेस में प्रत्येक रिकॉर्ड डालता हूं और प्रगति पट्टी अद्यतन करता हूं।एएसपी.नेट AJAX प्रगति बार: पीछे कोड से अद्यतन?

समस्या यह है कि मैं किसी भी समाधान है कि कोड से एक प्रगति बार अद्यतन करता है के पीछे लगाने के लिए नहीं कर पा रहे है। मैंने Matt Berseth's solution का उपयोग करने का प्रयास किया।

यह को देखने के लिए बहुत अच्छा है, लेकिन मैं इसे पीछे कोड से काम कर पाने के नहीं देख सकता। सैद्धांतिक रूप से, मुझे लगा कि पृष्ठ पर एक टेक्स्टबॉक्स में मूल्य डालना, और प्रतिशत सेट करने के लिए एक जावास्क्रिप्ट फ़ंक्शन पर अस्थिरता सेट करना परीक्षण के रूप में काम करेगा, लेकिन यहां तक ​​कि मुझे वांछित परिणाम भी नहीं दिए गए थे।

यह सुझाव कैसे किया जा सकता है इसके बारे में कोई सुझाव?

उत्तर

1

आप क्या पता होना चाहिए कि आप मानक FileUpload नियंत्रण का उपयोग कर एक फाइल अपलोड की स्थिति की जाँच नहीं कर सकते हैं। आप सर्वर पर फ़ाइल अपलोड करना और फिर ओडीबीसी का उपयोग करके उससे कनेक्ट कर सकते हैं और अपने डेटाबेस एसिंक्रोनस में लाइनों को पढ़ने और डालने शुरू कर सकते हैं (किसी पृष्ठ पर अजाक्स अनुरोध करके या स्क्रिप्ट सेवा का उपयोग करके)।

जहां तक ​​प्रगति पट्टी जाती है, आपको बस एक सीएसएस प्रोग्रेस बार का उपयोग करना चाहिए (आप http://css-tricks.com/examples/ProgressBars/ पर एक साधारण उदाहरण पा सकते हैं)।

:

आपका * .asmx फ़ाइल की तरह कुछ शामिल करना चाहिए:

उसके बाद, आप एक स्क्रिप्ट सेवा एक विधि के साथ (एक वेब serivice का प्रयोग करके) सर्वर से अपनी प्रगति की स्थिति लौट सकते हैं बनाने चाहिए तब

<asp:ScriptManager runat="server" ID="ScriptManager"> 
<Services> 
    <asp:ServiceReference Path="~/services/import.asmx" InlineScript="false" /> 
</Services> 
</asp:ScriptManager> 

, आप (examp के लिए प्रत्येक दूसरे को समय-समय जावास्क्रिप्ट से कि विधि कॉल करने के लिए सक्षम होना चाहिए:

[WebMethod] 
public int GetStatus() 
    { 
     int progress = 0; // in percents 
     // your server-side code here 
     return progress; 
    } 

आपका aspx पेज की तरह कुछ को शामिल करना चाहिए le, setTimeout का प्रयोग करके) और सरल जावास्क्रिप्ट या jQuery के साथ प्रगति बार चौड़ाई अद्यतन:

var tout, service; 

function UpdateStatus() { 
    if (tout != null) 
     clearTimeout(tout); 

    if (service == null) 
     service = new namespace.here.serice_class_here(); 

    service.GetStatus(onSuccess, onFailure);  
} 

function onSuccess(result) { 
    // update the width of the progress with result (the integer value of the progress) 
    progress_bar.style.width = percent + "%";   

    // call the method again 
    tout = setTimeout("UpdateStatus()", 1000); 
} 

function onFailure(error) { 
    alert(error.get_message()); 
} 

आप अपने onSuccess जावास्क्रिप्ट समारोह का विस्तार कर सकते हैं और जब प्रगति पूरा हो गया है (दिए गए मान 100% है) आप के लिए उपयोगकर्ता अनुप्रेषित कर सकता है एक और पेज या अपनी जरूरतों के आधार पर एक जानकारी या एक बटन प्रदर्शित करें।

मुझे आशा है कि इससे मदद मिलती है!

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