C/S系統嵌入技巧(利用使用者控制項+Web技術)

來源:互聯網
上載者:User

--首先建立一個使用者控制項 該控制項包含如下控制項
--1:一個重新整理Button控制項
--2:一個webBrowser1控制項
--3:其它可以增加一個狀態提示控制項等 主要控制項為1 和 2
--如:

--------------------

--------------------

就是我們建立的自訂群組件 具體的代碼如下:

------------------------

 
using System.Security;
using System.Security.Permissions;

namespace Test
{
    [PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
    [System.Runtime.InteropServices.ComVisibleAttribute(true)]
    public partial class LawRemindHtml : UserControl
    {
        public LawRemindHtml()
        {
            InitializeComponent();

        
            webBrowser1.AllowWebBrowserDrop = false;
            webBrowser1.IsWebBrowserContextMenuEnabled = false;
            webBrowser1.WebBrowserShortcutsEnabled = false;

            webBrowser1.ObjectForScripting = this;

        }

        public void SearchRemind()
        {
           BuildHtml(CreateDataSet().Tables[0]);
        }

        private DataSet CreateDataSet()
        {
            DataSet ds = new DataSet();
            DataTable dt = new DataTable();
            dt.Columns.Add("PrimaryKey", typeof(String));
            dt.Columns.Add("A", typeof(String));
            dt.Columns.Add("B", typeof(String));
            dt.Columns.Add("C", typeof(String));
            ds.Tables.Add(dt);
            DataRow dr = dt.NewRow();
            dr[0] = "PrimaryKey1";
            dr[1] = "A1";
            dr[2] = "B1";
            dr[3] = "C1";
            dt.Rows.Add(dr);
            dr = dt.NewRow();
            dr[0] = "PrimaryKey2";
            dr[1] = "A2";
            dr[2] = "B2";
            dr[3] = "C2";
            dt.Rows.Add(dr);
            dr = dt.NewRow();
            dr[0] = "PrimaryKey3";
            dr[1] = "A3";
            dr[2] = "B3";
            dr[3] = "C3";
            dt.Rows.Add(dr);

            return ds;
        }
     

        private void BuildHtml(DataTable refTable)
        {
            string html2 = "<tr style='color: blue;'><td>A</td><td>B</td><td>C</td></tr>";

            foreach (DataRow dr in refTable.Rows)
            {
                html2 = html2 + string.Format("<tr ondblclick =/"ShowDetail('{3}')/"><td>{0}</a></td><td>{1}</td><td>{2}</td></tr>", dr["A"], dr["B"], dr["C"], dr["PrimaryKey"]);
            }
            if (string.IsNullOrEmpty(html2)) html2 = "";

            string html1 = @"<html>
<head>
    <title>幾日內學生學費到期催款列表</title>
</head>
<body style='font-size:9pt'>
<div id='layer1' style='overflow-y:hidden'>
<div id='layer2'>
<table width='95%'  border='0' align='center' style='font-size:9pt'> ";

            string html3 = @"
</table>
</div>
<div id='layer3'></div>
</div> ";
            string js = @"
<script language='javascript' type='text/javascript'>
    var layerHeight = 600; // 定義捲動區域的高度.
    var iFrame = 1; // 定義每幀移動的象素.
    var iFrequency = 50; // 定義幀頻率.
    var timer; // 定義時間控制代碼.
    if(document.getElementById('layer2').offsetHeight >= layerHeight)
       document.getElementById('layer1').style.height = layerHeight;
else
       document.getElementById('layer1').style.height = document.getElementById('layer2').offsetHeight;
       document.getElementById('layer3').innerHTML = document.getElementById('layer2').innerHTML;
  
    function move(){
       if(document.getElementById('layer1').scrollTop >= document.getElementById('layer2').offsetHeight){
      document.getElementById('layer1').scrollTop -= (document.getElementById('layer2').offsetHeight - iFrame);
       }
       else {
          document.getElementById('layer1').scrollTop += iFrame;
       }
    }
 
    timer = setInterval('move()',iFrequency);
    document.getElementById('layer1').onmouseover=function() {clearInterval(timer);}
    document.getElementById('layer1').onmouseout=function() {timer=setInterval('move()',iFrequency);}
   
    function ShowDetail(saleNo)
    {
       window.external.SendMessage(saleNo);  
    }
</script>";
            string html4 = @"
</body>
</html>
";
            webBrowser1.DocumentText = html1 + html2 + html3 + js + html4;

       
        }

        private void bbtRefresh_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            SearchRemind();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            SearchRemind();
        }
        public void SendMessage(string refSaleNo)
        {
            //MessageBox.Show(refSaleNo);
            //FrmLawSendPhoneMessage frmSearch = new FrmLawSendPhoneMessage("01");
            //frmSearch.ShowDialog();
            //frmSearch.Dispose();
        }
    }
}

-------------------------

 

在實際的應用中資料的讀取要從後台資料庫擷取。

 

如何應用呢 如下:

--------------------------------------------------------

        LawRemindHtml html; //引用使用者組件

        public TestHtmlUse()  ///類TestHtmlUse的夠造函數
        {
            //
            // Required for Windows Form Designer support
            //
            InitializeComponent();
            mainform = this;

            DockManager dockManager1 = new DockManager(this);  //需要引入 DevExpress.XtraBars.Docking命名空間

            DockPanel dp = dockManager1.AddPanel(DockingStyle.Left);
            //lawRemiand = new LawRemindControl(this);
            //lawRemiand.Dock = DockStyle.Fill;

            html = new LawRemindHtml();

            html.Dock = DockStyle.Fill;
            html.Show();
            dp.Text = "幾日內學生學費到期催款列表";
            dp.Width = 300;
            dp.Visibility = DockVisibility.AutoHide;
            dp.ControlContainer.Controls.Add(html);      
            //
            // TODO: Add any constructor code after InitializeComponent call
            //
        }

-----------------------------------------------------------

 

大體思路如上,以準備以後修改中用到。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.