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

نام تاپیک: مشکل در مورد ()window.open() , window.close

  1. #1

    مشکل در مورد ()window.open() , window.close

    سلام.

    من توی یه صفحه که اسمش رو می ذارم صفحه ی اصلی یه DataGrid دارم. یه ستون ویرایش بهش اضافه کردم و دستی اون رکورد رو ویرایش می کنم. از طریق CommandArgtment من ID اون ردیف رو فرستادم. بعد هم oncommand اون رو Edit گذاشتم:(ConDB نام تابعی هست که یه DataSet رو بعد از Select بر می گردونه)


    public void Edit(object sender, CommandEventArgs e)
    {
    Session["QuestionID"] = e.CommandArgument;
    ds = ConDB();
    DataRow[] drFound = ds.Tables["tblQuestion"].Select("ID='" + Session["QuestionID"].ToString() + "'");
    foreach(DataRow dr in drFound)
    {
    Session["Auther"] = dr["Auther"];
    Session["Title"] = dr["Title"];
    Session["Description"] = dr["Description"];
    }
    Response.Write("<script>window.open('NewQuestion.a spx?Do=EditQuestion', null, 'menubar=0, navigatebar=0, width=600, height=310, left=200, top=200')</script>");
    }


    تو صفحه ی پاپ آپ، با استفاده از این Session ها، DataBase رو ویرایش می کنم:


    private void ibUpdate_Click(object sender, System.Web.UI.ImageClickEventArgs e)
    {
    SqlConnection con = new SqlConnection(Session["ConnectionString"].ToString());
    string stUpdate = "UPDATE tblQuestion SET Title='" + txtTitle.Text + "' , Description='" + txtDescription.Text + "' WHERE ID='" + Session["QuestionID"].ToString() + "'";
    SqlCommand comUpdate = new SqlCommand(stUpdate,con);
    con.Open();
    comUpdate.ExecuteNonQuery();
    con.Close();
    Response.Write("<script>window.close()</script>");
    }


    حالا چون DataBase ویرایش شده، باید بعد از Close شدن صفحه پاپ آپ، صفحه اصلی Refresh بشه. من چکار می تونم بکنم؟

  2. #2
    عرض شود که:
    از اونجایی که شما هم داری اشتباه 99 درصد افراد دیگه رو مرتکب میشی و کاری که داری انجام میدی (ویرایش رکورد در پنجره ای مجزا)، عشق اکثر برنامه نویسان هست! یک توضیح اجمالی میدم.
    پنجره هایی که توسط دستور window.open باز میشن، می تونن مقادیر خودشون رو از پنجره ی پدرشون دریافت کنن!
    و این یعنی عدم نیاز به PostBack صفحه...
    مسلما این کار با جاوا اسکریپت امکان پذیر هست و مستقیما به توانایی تو در کار با جاوا اسکریپت بر میگرده.
    به عنوان مثال، اگر قصد داشته باشی که مقداری رو که در یک TextBox بر روی فرم پدر وجود داره، بر روی فرمی که با استفاده از دستور window.open باز شده نمایش بدی، به شکل زیر عمل کن:

    var myForm = window.opener.document.forms[0];
    document.write(myForm["myTextBox"].value);

    opener به فرمی اشاره می کنه که باعث باز شدن پنجره ی جاری شده.
    مسلما در این حالت نه نیازی به Session داری و نه نیازی به PostBack صفحه!

    و اما قسمت دوم سوالت:
    دقیقا همانند بخش اول عمل می کنی اما با کمی تفاوت!
    کافیه در روال onunload صفحه فرزند، یک ارجا به یک Button که باعث ایجاد PostBack میشه به دست بیاری و روال click اش رو فراخونی کنی:

    var myForm = window.opener.document.forms[0];
    myForm["myButton"].click();

    جالب بود! نه؟

    موفق باشی.

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

  1. صفحه با تنظیمات مثل window.open!
    نوشته شده توسط ali_kolahdoozan در بخش طراحی وب (Web Design)
    پاسخ: 6
    آخرین پست: شنبه 06 بهمن 1386, 22:58 عصر
  2. سوال در مورد تابع window.open
    نوشته شده توسط JikSearch در بخش طراحی وب (Web Design)
    پاسخ: 3
    آخرین پست: چهارشنبه 30 شهریور 1384, 10:56 صبح
  3. window.close
    نوشته شده توسط Happy_davood در بخش طراحی وب (Web Design)
    پاسخ: 2
    آخرین پست: چهارشنبه 18 خرداد 1384, 22:15 عصر
  4. Close Window
    نوشته شده توسط najeeb در بخش برنامه نویسی در Delphi
    پاسخ: 1
    آخرین پست: سه شنبه 10 شهریور 1383, 10:59 صبح

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

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