نمایش نتایج 1 تا 12 از 12

نام تاپیک: !Page Life Cycle

  1. #1

    !Page Life Cycle

    من کلی تو سایتهای دیگه گشتم بعدم تو این سایت و چیزای زیادی دستگیرم شد ولی هنوز با یه چیزی مشکل دارم!
    من یه button و یه placeholder بصورت static درست کردم

    <form id="form1" runat="server">
    <div>
    <asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
    <asp:Button ID="Button1" runat="server" Text="Submit"/>
    </div>
    </form>

    کد 1:
    protected overridevoid OnInit(EventArgs e)
    {
    base.OnInit(e);
    CreateText();
    }

    کد 2:
    protected overridevoid LoadViewState(object savedState)
    {
    base.LoadViewState(savedState);
    CreateText();
    }

    کد 3:
    protected void Page_Load(object sender, EventArgs e)
    {
    CreateText();
    }

    کد 4:

    private TextBox txt;

    private void CreateText()
    {
    txt = new TextBox();
    txt.ID = "myText";
    PlaceHolder1.Controls.Add(txt);
    }


    اگر در codebehind فقط از کد (1و4) یا (2و4) یا (3و4) استفاده کنیم و بعد از load شدن page در textbox مثلا 123 تایپ کنیم و button را بمنظور postback کلیک کنیم مشاهده میشود که در هنگام postback کد 1 یا 2 یا 3 فراخوانی و بعد CreateText هم فراخوانی میشود. تا قبل از اتمام کد 1 یا 2 یا 3 مقدار ""=txt.Text میشود.
    حالا چرا به محض اتمام کد 1 یا 2 یا 3 مقدار "123"=txt.Text میشود؟
    یا میتونم سوال رو جوره دیگه مطرح کنم! کد 1 یا 2 یا 3 در سه مرحله متفاوت از life cycle هستند ولی انگار بعد از اتمام هر کدام اطلاعات از viewstate خوانده شده و به controlها انتقال میابد!!!

  2. #2
    کسی واقعا نظری نداره!

  3. #3
    TextBox جزء کنترل هایی هست که مقدارش در ViewState قرار نمی گیره و از طریق POST رد و بدل میشه.

    موفق باشید.

  4. #4
    اگر بخوام مقدار کنترلها از جمله TextBox و Label در ViewState قرار بگیره باید چکار کنم؟

  5. #5
    منظورت واضح نیست.
    مسلما منظورت ViewState["myState"] = Value نیست!

  6. #6
    نه منظورم اینه که خودم در ViewState ذخیره نکنم چون ممکنه UserControl پر از TextBox و Label باشه

  7. #7
    کمی برای سوال خودتون وقت بگذارید تا زودتر به جواب برسید. متوجه منظورت نشدم.

  8. #8
    شرمنده سوال رو بد گفتم! اگر بخواهیم مقادیر کنترلهای داینامیک از جمله UserControl که شامل چندین TextBox و Label هست رو ذخیره کنیم که در PostBack مقادیر عوض نشود بهترین را چیست؟
    1-مقادیر هر کنترل را در ViewState ذخیره کنیم و در PostBack بازیابی کنیم
    2-در OnInit از کنترلها instance بگیریم و بگذاریم خود NET. مقادیر را در ViewState ذخیره و بازیابی کند
    3-راه بهتر دیگه!!!

  9. #9
    استانداردی که در کتاب های طراحی کنترل بیان شده، از جمله کتاب معروف Nikhil Kothari - ذخیره ی وضعیت کنترل ها در ViewState به صورت ایجاد Property برای هر خاصیت هست. ضمن اینکه توصیه میشه این Property ها از نوع virtual باشن تا توسعه گران بتونن اونها رو Override کنن.

    موفق باشید.

  10. #10
    اگه تعداد Controlها متغیر باشه چی؟

  11. #11
    مقادیر Composite Control ها رو باید در یک آرایه از نوع object قرار بدی و در روال های SaveViewState و LoadViewState، اِعمال و بازیابی کنی.

    موفق باشید.

  12. #12
    پس یه جورایی باید خودمون مقادیر رو Save و Load کنیم و NET. بطور اتوماتیک نمیتونه این کار رو بکنه!

تاپیک های مشابه

  1. رفع مشکل Cycle
    نوشته شده توسط mehdi58 در بخش SQL Server
    پاسخ: 3
    آخرین پست: پنج شنبه 18 اسفند 1384, 22:19 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •