2013-02-19 54 views
15

के बाद मूल्य खो देता है यह HTML है। मेरे पास एक दोहराव है जिसमें उपयोगकर्ता नियंत्रण होता है।उपयोगकर्ता नियंत्रण की संपत्ति एक पोस्टबैक

<asp:Repeater ID="rpNewHire" runat="server"> 
<HeaderTemplate> 
    <table>    
</HeaderTemplate> 
<ItemTemplate> 
    <tr> 
    <td> 
     <user:CKListByDeprtment ID = "ucCheckList" 
      DepartmentID= '<%# Eval("DepID")%>' 
      BlockTitle = '<%# Eval("DepName")%>' 
      runat = "server"></user:CKListByDeprtment> 
    </td> 
    </tr> 
    </ItemTemplate> 
    <FooterTemplate> 
    </table> 
    </FooterTemplate> 
</asp:Repeater> 

DepartmentID एक संपत्ति है कि मैं उपयोगकर्ता नियंत्रण अंदर परिभाषित किया गया है।

int departmentID; 

public int DepartmentID 
{ 
    get { return departmentID; } 
    set { departmentID = value; } 
} 

और यह मैं इसे कैसे

protected void Page_Load(object sender, EventArgs e) 
{ 
    int test = departmentID; 
} 

का उपयोग करने की कोशिश कर रहा हूँ पहली बार के लिए पृष्ठ लोड हो तो departmentID जब एक मूल्य है। हालांकि, जब पृष्ठ वापस पोस्ट करता है, तो वह मान हमेशा होता है।

उत्तर

21

सभी चर (और नियंत्रण) पेज के जीवनचक्र के अंत में निपटारा कर रहे हैं उपयोग करने के लिए अपनी संपत्ति बदलें। तो आपको अपने चर को बनाए रखने के लिए एक तरीका चाहिए, उदा। ViewState में।

public int DepartmentID 
{ 
    get { 
     if (ViewState["departmentID"] == null) 
      return int.MinValue; 
     else 
      return (int)ViewState["departmentID"]; 
    } 
    set { ViewState["departmentID"] = value; } 
} 

MSDN पत्रिका लेख "आपका ASP.NET अनुप्रयोग में लगातार उपयोगकर्ता राज्य के प्रबंध के लिए नौ विकल्प" उपयोगी है, लेकिन यह अब MSDN वेबसाइट पर देखा जा सकता है। यह अप्रैल 2003 संस्करण में है, जिसे आप download as a Windows Help file (.chm) कर सकते हैं। (गुणों को लाने और "यह इंटरनेट से डाउनलोड किया गया था" अनब्लॉक करने के लिए मत भूलना, अन्यथा आप लेख नहीं देख सकते हैं।)

+0

समझ में आओ। मैं पूरे वर्ग में परिवर्तनीय विभाग आईडी का उपयोग कर रहा था। इसके बजाय मैं क्या उपयोग करूं? संपत्ति, यानी विभाग आईडी? – Richard77

+1

@ रिचर्ड 77: हां, यही वजह है कि आपको खेतों में संपत्तियों को क्यों पसंद करना चाहिए। आप बाद में कार्यान्वयन बदल सकते हैं। खेतों को हमेशा निजी बनाएं। –

+0

समझ में आओ। कोई आश्चर्य नहीं, एएसपी.NET पृष्ठ के जीवन चक्र को जानना नौकरी साक्षात्कार के दौरान शीर्ष प्रश्नों में से एक है। बहुत बहुत धन्यवाद। – Richard77

3

viewstate

int departmentID = 0; 
public int DepartmentID 
{ 
    get { 
     if(ViewState["departmentID"]!=null) 
     { departmentID = Int32.Parse(ViewState["departmentID"]); }; 
     return departmentID; 
     } 
    set { ViewState["departmentID"] = value; } 
} 
+3

यह देखेंगे कि 'व्यूस्टेट ["विभाग आईडी"] शून्य है । संपादित करें: यह अभी भी आपके संपादन के बाद उड़ जाएगा;) –