ASP.NET WebControl & صفحة - الضوابط إضافة (مثل مربع نص) حيوي

StackOverflow https://stackoverflow.com/questions/1028905

سؤال

وأنا أحاول لإنشاء عنصر تحكم الخادم المخصصة (WebControl) مع مربع نص.

وأود أن أضيف asp.net النص إلى التحكم المخصصة في CreateChildControls التجاوز. في تجاوز OnInit يمكنني إضافة معالج الحدث لTextBox.TextChanged.

وتعمل كل شيء، إلا أن TextChanged تطلق أبدا. نظرت إلى حالة العرض ويبدو لي النص لم يحفظ الخاصية Text لها في حالة العرض. لقد حاولت وضع نص في أماكن مختلفة، بما في ذلك البناء، ولكن لا شيء يعمل.

وكيف يمكنني الحصول على مربع نص إضافتها بشكل حيوي لWebControl لحفظه من النص في حالة العرض والحصول على TextChanged الحدث لاطلاق النار؟

وسأكون ممتنا مثال من التعليمات البرمجية WebControl وراء مع مربع نص يتم إضافتها بشكل حيوي والحدث TextChanged تطلق.

هل كانت مفيدة؟

المحلول 2

وثابتة. يجب إنشاء التحكم الديناميكي، وأضاف في الحدث التهيئة. يجب أن يتم تعيين معرف بدون حرف ASP.NET الخاصة ( '$' أو ':' داخل ID العرف وكسر الأشياء). يجب تعيين كافة الخصائص بعد يضاف التحكم إلى شجرة الضوابط.

وهنا مثال عملي للصفحة codebehind:

private readonly TextBox _textBoxTest = new TextBox();

protected void Page_Init( object sender, EventArgs e )
{
    this.form1.Controls.Add( _textBoxTest ); 
    _textBoxTest.Text = "TestBoxTest";
    _textBoxTest.ID = "TestBoxTestId";
    _textBoxTest.TextChanged += this._textBoxTest_TextChanged;
}

void _textBoxTest_TextChanged( object sender, EventArgs e )
{
    _textBoxTest.Text = "Worked";
}

ولWebControl ضع شفرة الحرف الأول في OnInit تجاوز

نصائح أخرى

ويجب إنشاء تحكم إنشاؤه بشكل حيوي مرة أخرى في كل بعد الظهر، (الحدث pageInit هو الخيار الأفضل) لهذا الحدث أن يكون أطلق النار.

وبالمناسبة، إذا كنت تريد الحدث TextChanged لتوليد إعادة النشر يجب أيضا تعيين AutoPostback من السيطرة إلى true.

هذا سوف تساعدك على الخروج. باختصار، تحتاج إلى معالجة حالة العرض لوأضاف بك حيوي تحكم بنفسك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top