2012-11-13 14 views
22

मैं केंडो यूआई के विंडो घटक का उपयोग कर रहा हूं, जो कि किसी भी मोडल संवाद के समान है।विंडो के अंदर कस्टम बंद बटन के साथ एक केंडोउ विंडो बंद करना

मैं इसमें कोई समाप्त करें बटन, कैसे मुझे लगता है कि बटन पर क्लिक करने पर विंडो को बंद करते हैं (क्लिक करने के बजाय डिफ़ॉल्ट 'एक्स' शीर्षक पट्टी में बटन)

मेरी विंडो में सामग्री दूसरे से भरी हुई है दृश्य

@(Html.Kendo().Window() 
      .Name("window") 
      .Title("Role") 
      .Content("loading...") 
      .LoadContentFrom("Create", "RolesPermissions", Model.Role) 
      .Modal(true) 
      .Width(550)   
      .Height(300)   
      .Draggable() 
      .Visible(false) 
     ) 

है कि एक ही ध्यान में रखते हुए मैं

<span id="close" class="btn btn-inverse">Cancel</span> 

यह वही है मैं अपने मुख्य दृश्य में है (दृश्य खिड़की कह कर बुलाया) है

$(document).ready(function() { 
    var window = $("#window").data("kendoWindow"); 

    $("#open").click(function (e) { 
     window.center(); 
     window.open(); 
    }); 

    $("#close").click(function(e) { 
     window.close(); 
    }); 
}); 

उत्तर

27

मूल रूप से आप पहले से ही पता है कि विंडो को बंद करने के लिए - आप पास अपने एपीआई के विधि के साथ यह करने के लिए की जरूरत है।

$("#window").data("kendoWindow").close(); 

लेकिन आदेश दृश्य आपको सामग्री भरी हुई है जब तक प्रतीक्षा करने की आवश्यकता के अंदर बटन को हैंडलर संलग्न करने में - आप refresh घटना का उपयोग करने की जरूरत है।

उदा।

$('#theWindowId').data().kendoWindow.bind('refresh',function(e){ 
    var win = this; 
    $('#close').click(function(){ 
     win.close(); 
    }) 
}) 
+0

ग्रेट, अच्छा स्पष्टीकरण, और यह वही है जो मैं ढूंढ रहा हूं! –

+2

यह कोड कहां जाता है? मुख्य दृश्य के तैयार समारोह में? मैंने कोशिश की, लेकिन $ ('# theWindowId')। डेटा()। KendoWindow अपरिभाषित है ($ ('# theWindowId')। डेटा() परिभाषित किया गया है, लेकिन इसमें केंडोविंडो नहीं है) –

+1

आपको इसे करने के बाद विंडो शुरू की गई है। या विंडो में कॉन्फ़िगर करते समय आप रीफ्रेश हैंडलर को प्रारंभ में निर्दिष्ट कर सकते हैं, जैसे कि http://demos.kendoui.com/web/window/events.html –

0

इसके लिए केन्डो ui में एक घटना है यह इस

$("#idofyourbutton").click(function() { 
    $("#window").data("kendoWindow").close(); 
    }); 
+0

ऐसा इसलिए है क्योंकि सामग्री अपनी खिड़की में लोड काम नहीं किया एक और दृश्य से संबंधित है। मेरे पास मेरे अन्य दृश्य में एक बटन है जिसमें "बंद करें" –

+0

की एक आईडी है, ओह, आप का मतलब है कि एक अन्य दृश्य से आने वाली विंडो में –

+0

यूप, मैंने अपना मुख्य पोस्ट –

1

जावास्क्रिप्ट में की तरह कुछ होना चाहिए - एचटीएमएल window एक वस्तु है कि एक ब्राउज़र में एक खुली खिड़की का प्रतिनिधित्व करता है। अपने window को कुछ और के रूप में परिभाषित करने का प्रयास करें।

$(document).ready(function() { 
    var wnd = $("#window").data("kendoWindow"); 

    $("#open").click(function (e) { 
     wnd.center(); 
     wnd.open(); 
    }); 

    $("#close").click(function(e) { 
     wnd.close(); 
    }); 
}); 
0

ajax द्वारा लोड सामग्री के साथ काम करने के मामले में, Petur Subev के जवाब एकदम सही है! मैं टेम्पलेट्स के साथ काम करने का एक उदाहरण देना चाहता हूं, यह अधिक सरल है (जबकि सभी अनुरोध shoulb AJAX द्वारा नहीं हैं)। नीचे टेम्पलेट पर विचार करें:

<script id="Template_Example1" type="text/kendo-tmpl"> 
<div class="i-contentWindow"> 
    <div> 
     <a id="btn1" href="\#"><span class="k-icon k-i-cancel"></span>Button 1</a> 
    </div> 
</div> 

और अब, चलो टेम्पलेट ई कॉल विंडो पास विधि लोड:

function ExampleFn1(dataItem) { 
    //create the template 
    var template = kendo.template($("#Template_Example1").html()); 

    //create a kendo window to load content 
    var kWindow = openKendoWindow({ 
     title: "Window Tests", 
     iframe: false, 
     resizable: false 
    }).content(template(dataItem)); 

    // call window close from button inside template 
    $("#btn1").click(function (e) { 
     e.preventDefault(); 
     alert("btn1 on click!"); 
    }); 

    kWindow.open(); 
} 
संबंधित मुद्दे