天天看點

在窗體間傳遞實體資料

一:寫個工具類,先引用Newtonsoft.Json.dll,用其序列化對象.

在窗體間傳遞實體資料

using  System;

在窗體間傳遞實體資料

using  System.Collections.Generic;

在窗體間傳遞實體資料

using  System.Text;

在窗體間傳遞實體資料

using  System.Web.UI;

在窗體間傳遞實體資料

using  Newtonsoft.Json;

在窗體間傳遞實體資料

using  System.Web;

在窗體間傳遞實體資料
在窗體間傳遞實體資料

namespace   ***** .Core.Common

在窗體間傳遞實體資料
在窗體間傳遞實體資料

... {

在窗體間傳遞實體資料
在窗體間傳遞實體資料

    /// <summary>

在窗體間傳遞實體資料

    /// 彈出視窗工具類

在窗體間傳遞實體資料

    /// </summary>

在窗體間傳遞實體資料

    /// <remarks>

在窗體間傳遞實體資料

    /// 實作了彈出視窗傳回對象的封裝方法

在窗體間傳遞實體資料

    /// </remarks>

在窗體間傳遞實體資料

    /// Title:     PopUpWindow

在窗體間傳遞實體資料
在窗體間傳遞實體資料

    public class PopUpWindow

在窗體間傳遞實體資料
在窗體間傳遞實體資料

    ...{

在窗體間傳遞實體資料
在窗體間傳遞實體資料

        /// <summary>

在窗體間傳遞實體資料

        /// 将對象傳回給調用頁面

在窗體間傳遞實體資料

        /// </summary>

在窗體間傳遞實體資料

        /// <param name="entity">需要傳回的對象執行個體</param>

在窗體間傳遞實體資料

        /// <param name="page">調用此方法的page本身</param>

在窗體間傳遞實體資料

        public static void ReturnObject(Object entity, Page page)

在窗體間傳遞實體資料
在窗體間傳遞實體資料

        ...{

在窗體間傳遞實體資料

            //使用JSON序列化對象

在窗體間傳遞實體資料

            string output = String.Format("var retObj = {0};", JavaScriptConvert.SerializeObject(entity));

在窗體間傳遞實體資料
在窗體間傳遞實體資料

            //注冊腳本到彈出視窗以傳回序列化後的對象

在窗體間傳遞實體資料

            Type cstype = HttpContext.Current.GetType();

在窗體間傳遞實體資料

            ClientScriptManager cs = page.ClientScript;

在窗體間傳遞實體資料
在窗體間傳遞實體資料

            //将實體傳回給調用方caller

在窗體間傳遞實體資料

            String csname1 = "CloseScript";

在窗體間傳遞實體資料

            if (!cs.IsStartupScriptRegistered(cstype, csname1))

在窗體間傳遞實體資料
在窗體間傳遞實體資料

            ...{

在窗體間傳遞實體資料

                String cstext1 = String.Format("{0} window.returnValue = {1};window.close();", output, "retObj");

在窗體間傳遞實體資料

                cs.RegisterStartupScript(cstype, csname1, cstext1, true);

在窗體間傳遞實體資料

            }

在窗體間傳遞實體資料

        }

在窗體間傳遞實體資料

    }

在窗體間傳遞實體資料

}

在窗體間傳遞實體資料

二:二:在公共頁某按鈕事件裡設定傳回資料,例如:

在窗體間傳遞實體資料

protected   void  Button1_Click1( object  sender, EventArgs e)

在窗體間傳遞實體資料
在窗體間傳遞實體資料

     ... {

在窗體間傳遞實體資料

     //建立需要傳回的實體對象

在窗體間傳遞實體資料

        SampleEntity entity = new SampleEntity();

在窗體間傳遞實體資料

        entity.ProjectNo = TextBox1.Text;

在窗體間傳遞實體資料

        entity.ProjectName = TextBox2.Text;        

在窗體間傳遞實體資料
在窗體間傳遞實體資料

        //将對象傳回給調用頁面

在窗體間傳遞實體資料

        PopUpWindow.ReturnObject(entity, this);

在窗體間傳遞實體資料
在窗體間傳遞實體資料
在窗體間傳遞實體資料

        ////建立需要傳回的實體對象清單

在窗體間傳遞實體資料

        //SampleEntity entity1 = new SampleEntity();

在窗體間傳遞實體資料

        //entity1.ProjectNo = TextBox1.Text;

在窗體間傳遞實體資料

        //SampleEntity entity2 = new SampleEntity();

在窗體間傳遞實體資料

        //entity2.ProjectNo = TextBox2.Text;

在窗體間傳遞實體資料
在窗體間傳遞實體資料

        //List<SampleEntity> list = new List<SampleEntity>();

在窗體間傳遞實體資料

        //list.Add(entity1);

在窗體間傳遞實體資料

        //list.Add(entity2);

在窗體間傳遞實體資料
在窗體間傳遞實體資料
在窗體間傳遞實體資料

        ////将對象傳回給調用頁面

在窗體間傳遞實體資料

        //PopUpWindow.ReturnObject(list, this);

在窗體間傳遞實體資料

    }

三:在調用頁放置一用戶端圖檔控件,例如: 然後在用戶端腳本中加入如下代碼即可,建議以模式視窗打開.

在窗體間傳遞實體資料

< img  src ="../images/lookup.gif"  onclick ="OnQueryClick()"  id ="btnImage"   alt ="點選我!"  tyle ="cursor: hand"   />

在窗體間傳遞實體資料

//獲得彈出視窗的傳回對象

在窗體間傳遞實體資料
在窗體間傳遞實體資料

   < script  type ="text/javascript" > ...

在窗體間傳遞實體資料

    function OnQueryClick()

在窗體間傳遞實體資料
在窗體間傳遞實體資料

    ...{

在窗體間傳遞實體資料

        var address = "test.aspx";

在窗體間傳遞實體資料

        var parameter1 = "";

在窗體間傳遞實體資料

        var OpenStyle = "dialogWidth:650px;dialogHeight:550px;dialogLeft:200px;dialogTop:150px;center:yes;help:false;resizable:false;status:false";

在窗體間傳遞實體資料

        var returnValue = window.showModalDialog(address,parameter1,OpenStyle);

在窗體間傳遞實體資料
在窗體間傳遞實體資料

        //分别擷取傳回對象的屬性

在窗體間傳遞實體資料

        if(returnValue != null)

在窗體間傳遞實體資料
在窗體間傳遞實體資料

        ...{           

在窗體間傳遞實體資料

            document.getElementById("ctl00$ContentPlaceHolder1$txtProjectNo").value = returnValue.ProjectNo;    

在窗體間傳遞實體資料

        document.getElementById("ctl00$ContentPlaceHolder1$txtProjectName").value = returnValue.ProjectName;                               

在窗體間傳遞實體資料

        }        

在窗體間傳遞實體資料

     }

在窗體間傳遞實體資料

     </ script >

繼續閱讀