2008-10-31 7 views
5

एएसपी.नेट हिडनफ़िल्ल्ड नियंत्रण तक पहुंचने का सबसे अच्छा तरीका क्या है जो जावास्क्रिप्ट के माध्यम से एएसपी.NET प्लेसहोल्डर नियंत्रण में एम्बेडेड है? दृश्यमान विशेषता प्रारंभिक पृष्ठ लोड में गलत पर सेट है और AJAX कॉलबैक के माध्यम से बदला जा सकता है।एएसपी एक्सेस करें: जावास्क्रिप्ट में छुपा क्षेत्र नियंत्रण

यहाँ मेरी वर्तमान स्रोत कोड है:

<script language="javascript" type="text/javascript"> 
    function AccessMyHiddenField() 
    { 
     var HiddenValue = document.getElementById("<%= MyHiddenField.ClientID %>").value; 

     //do my thing thing..... 
    } 
</script> 
<asp:PlaceHolder ID="MyPlaceHolder" runat="server" Visible="false"> 
    <asp:HiddenField ID="MyHiddenField" runat="server" /> 
</asp:PlaceHolder> 

संपादित करें: मैं कैसे ascx सी # में पीछे कोड में एक div टैग के लिए शैली सेट करूँ? इस कोड से वर्णन के पीछे है: CssStyleCollection HtmlControl.Style

अद्यतन: मैं एएसपी लाए गए: एक एएसपी के साथ hiddenfield: जब मैं एक चेतावनी बॉक्स में HiddenValue चर प्रदर्शित लेबल और मैं एक "अनिर्धारित" हो रही है । मैं इसे कैसे हल करूंगा।

अद्यतन 2: मैं आगे बढ़ गया और कोड को दोबारा प्रतिक्रिया दी, मैंने छिपे हुए क्षेत्र नियंत्रण को टेक्स्ट बॉक्स नियंत्रण के साथ बदल दिया और शैली को "प्रदर्शन: कोई नहीं;" पर सेट किया। मैंने जावास्क्रिप्ट फ़ंक्शन को भी हटा दिया (इसे कस्टम वैलिडेटर नियंत्रण द्वारा उपयोग किया गया था) और इसे एक आवश्यक फ़ील्ड वैलिडेटर नियंत्रण से बदल दिया गया।

+0

खैर यह गुण संपत्ति का उपयोग कर सेट किया जा सकता है, लेकिन तुम क्यों कि सर्वर साइड क्या करना चाहिए? – Salamander2007

+0

मैं इसे सर्वर की ओर सेट कर रहा हूं क्योंकि छुपा फ़ील्ड प्रदर्शित होता है जब उपयोगकर्ता किसी खोज परिणाम सेट से कोई आइटम चुनता है। –

+0

छुपा क्षेत्र, परिभाषा के अनुसार छिपा हुआ है। यदि आपको छिपे हुए क्षेत्र का मूल्य दिखाना है, तो टेक्स्टबॉक्स या लेबल – Salamander2007

उत्तर

5

मेरी समझ यह है कि यदि आप नियंत्रण सेट करते हैं। दृश्यमान पृष्ठ लोड के दौरान दृश्यमान = गलत, यह ग्राहक प्रतिक्रिया में प्रस्तुत नहीं किया जाता है। अपनी समस्या को हल करने के लिए मेरे सुझाव,

  1. प्लेसहोल्डर का उपयोग न करें है परिदृश्य से पहचानने, तुम सच में नहीं है, एक प्लेसहोल्डर जरूरत है जब तक आप गतिशील रूप से सर्वर साइड पर नियंत्रण जोड़ने की जरूरत है। Runat = सर्वर के बिना div का प्रयोग करें। आप सीएसएस का उपयोग कर उस div की दृश्यता को हमेशा नियंत्रित कर सकते हैं।
  2. यदि आपको बाद में गतिशील रूप से नियंत्रण जोड़ने की आवश्यकता है, तो प्लेसहोल्डर का उपयोग करें, लेकिन दृश्य = झूठी सेट न करें। प्लेसहोल्डर के पास कोई भी प्रदर्शन नहीं होगा, सीएसएस का उपयोग करके उस प्लेसहोल्डर की दृश्यता सेट करें। प्रोग्राम प्रोग्रामिक रूप से इसे कैसे करें:

    प्लेसहोल्डर आईडी। गुण ["शैली"] = "प्रदर्शन: कोई नहीं";

वैसे भी, के रूप में अन्य ने कहा है, अपनी समस्याओं होती है क्योंकि एक बार आप control.visible = false निर्धारित करते हैं, यह ग्राहक के जवाब में गाया नहीं होती है।

+0

जैसे अन्य नियंत्रणों का उपयोग करें, मैं प्रदर्शन को हटाने के लिए किस मूल्य का उपयोग करूंगा: none; प्लेसहोल्डर से शैली? –

+0

प्लेसहोल्डर आईडी। एट्रिब्यूज ["शैली"] = "डिस्प्ले: ब्लॉक"; ? या बस "प्रदर्शन:" काम करेगा। – goldenratio

3

यदि दृश्यता को गलत सर्वर-साइड पर सेट किया गया है, तो प्लेसहोल्डर प्रस्तुत नहीं किया जाएगा और आप जावास्क्रिप्ट से इसके अंदर कुछ भी एक्सेस नहीं कर पाएंगे। जब प्लेसहोल्डर दिखाई देता है तो आपका कोड काम करना चाहिए = "सत्य"

प्लेसहोल्डर से छुटकारा पाएं, छिपे हुए क्षेत्र को पहले खाली छोड़ दें, खोज के बाद इसे पॉप्युलेट करें।

1

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

सिर्फ एक प्रश्न, आप जगह धारक की दृश्यता को झूठी होने के लिए क्यों सेट कर रहे हैं, यदि इसमें एक छिपी हुई फ़ील्ड है?

वैसे भी इस मुद्दे को प्राप्त करने का एक संभावित तरीका, टेक्स्टबॉक्स या लेबल ऑब्जेक्ट जोड़ रहा है, और इसकी प्रदर्शन सीएसएस शैली को "none" पर सेट करें, फिर अपने कोड कॉपी में जो भी आप छिपे हुए क्षेत्र में डाल रहे हैं टेक्स्टबॉक्स/लेल टेक्स्ट प्रॉपर्टी, इस तरह आप जावास्क्रिप्ट का उपयोग करके आसानी से मूल्य पढ़ सकते हैं, क्योंकि टेक्स्टबॉक्स/लेबल प्रस्तुत किया जाएगा लेकिन दूसरों के लिए दृश्यमान नहीं होगा, हालांकि यह सुरक्षित काम नहीं हो सकता है।

+0

यह कोड का एक स्निपेट है जो खोज उपयोगकर्ता नियंत्रण डालता है। जब उपयोगकर्ता खोज परिणामों से आइटम का चयन करता है, तो यह प्लेसहोल्डर्स को प्रस्तुत करता है और छुपे हुए फ़ील्ड को चयनित मान पर सेट करता है। –

0

दृश्यमान वास्तव में इसे दृश्यमान नहीं बनाता है, आप इसे डिफ़ॉल्ट छोड़ सकते हैं। बस runat = "सर्वर" और इसका उपयोग करें। वैल्यू।

1

".visible = false" बनाने के बजाय, शैली को "प्रदर्शन: कोई नहीं;" में बदलें। यह आपके नियंत्रण को प्रस्तुत करेगा लेकिन इसे अदृश्य बना देगा।

+0

उसे इसकी आवश्यकता नहीं है, यह एक छिपी हुई फ़ील्ड है, –

+0

कुछ भी नहीं दिखाया गया है, "क्षमा करें, यह नहीं किया जा सकता" कहने के बजाय, मैं उसे समाधान देने की कोशिश कर रहा हूं। आप डाउनवॉटिंग की बजाय कोशिश क्यों नहीं करते हैं। – BoltBait

+0

मैं वास्तव में इसे किसी अन्य नियंत्रण में बदल सकता हूं। मैंने अपने शुरुआती कार्यान्वयन में एक छिपे हुए क्षेत्र के बारे में सोचा। –

2

इस प्रयास करें:

function popup(lid) 
{ 
    var linkid=lid.id.toString();  
    var lengthid=linkid.length-25;  
    var idh=linkid.substring(0,parseInt(lengthid)); 
    var hid=idh+"hiddenfield1"; 

    var gv = document.getElementById("<%=GridViewComplaints.ClientID %>"); 
    var gvRowCount = gv.rows.length; 
    var rwIndex = 1; 
    var username=gv.rows[rwIndex].cells[1].childNodes[1].innerHTML; 
    var prdid=gv.rows[rwIndex].cells[3].childNodes[1].innerHTML; 
    var msg=document.getElementById(hid.toString()).value; 
    alert(msg); 


    document.getElementById('<%= Labelcmpnme.ClientID %>').innerHTML=username; 
    document.getElementById('<%= Labelprdid.ClientID %>').innerHTML=prdid; 
    document.getElementById('<%= TextBoxviewmessage.ClientID %>').value=msg; 
    return false; 
} 


<ItemTemplate> 
    <asp:LinkButton ID="LabelComplaintdisplayitem" runat ="server" Text='<%#Eval("ComplaintDisp").ToString().Length>5?Eval("ComplaintDisp").ToString().Substring(0,5)+"....":Eval("ComplaintDisp") %>' CommandName ="viewmessage" CommandArgument ='<%#Eval("username")+";"+Eval("productId")+";"+Eval("ComplaintDisp") %>' class='basic' OnClientClick =" return popup(this)"></asp:LinkButton> 
    <asp:HiddenField ID="hiddenfield1" runat ="server" Value='<%#Eval("ComplaintDisp")%>'/> 
</ItemTemplate> 
संबंधित मुद्दे