1. 程式人生 > >ASP.NET使用者控制元件

ASP.NET使用者控制元件

ASP.NET中操作Word檔案?

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.OleDb;


private void btnOK_Click(object sender, System.EventArgs e)
  {
   try
   {
    object Nothing=System.Reflection.Missing.Value;//呼叫預設引數

    
    //取得Word檔案儲存路徑
    object [email protected];
    //object visible=false;
    //建立一個名為WordApp的元件物件
    Word.Application WordApp=new Word.ApplicationClass();

    //建立一個名為WordDoc的文件物件
    object missing = System.Reflection.Missing.Value;
    Word.Document WordDoc=WordApp.Documents.Add(ref missing,ref missing,ref missing,ref missing);
    //增加一表格
    Word.Table table=WordDoc.Tables.Add(WordApp.Selection.Range,1,1,ref Nothing,ref Nothing);
    //在表格第一單元格中新增自定義的文字內容
    table.Cell(1,1).Range.Text=tbBody.Text;
    //在文件空白地方新增文字內容
    WordDoc.Paragraphs.Last.Range.Text="歡迎參加.NET學習!";
    //將WordDoc文件物件的內容儲存為DOC文件
    WordDoc.SaveAs(ref filename,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing);
    //關閉WordDoc文件物件
    WordDoc.Close(ref Nothing, ref Nothing, ref Nothing);
    //關閉WordApp元件物件
    WordApp.Quit(ref Nothing, ref Nothing, ref Nothing);
    //返回結果
    lbResult.Text="文件路徑:<a href='"+tbPath.Text+"'>"+tbPath.Text+"</a>(點選連結檢視)<br>生成結果:成功!";
   }
   catch(Exception Ex)
   {
    string str = Ex.Message;
    Response.Write(str);
   }
  }


ASP.NET中操作EXCEL檔案?

private Excel.Application objExcel =  null;
  private Excel.Workbooks objBooks = null;
  private Excel._Workbook objBook = null;
  private Excel.Sheets objSheets = null;
  private Excel._Worksheet objSheet = null;
  private Excel.Range objRange =  null;
  private Excel.Font objFont = null;


  private void btnAdo_Click(object sender, System.EventArgs e)
  {
   // Establish a connection to the data source.
   OleDbConnection objConn = new OleDbConnection(
    "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strSampleFolder +
    "new.xls;Extended Properties=Excel 8.0;");
   objConn.Open();

   // Add two records to the table named 'MyTable'.
   OleDbCommand objCmd = new OleDbCommand();
   objCmd.Connection = objConn;
   objCmd.CommandText = "CREATE TABLE MyTable2 (FirstName char(255),LastName char(255))";
   objCmd.ExecuteNonQuery();
   
//   objCmd.CommandText = "Insert into MyTable (FirstName, LastName)" +
//    " values ('shao', 'zhidong')";
//   objCmd.ExecuteNonQuery();
//   objCmd.CommandText = "Insert into MyTable (FirstName, LastName)" +
//    " values ('張', '三')";
//   objCmd.ExecuteNonQuery();


   // Close the connection.
   objConn.Close();


  }

  private void btnAuto_Click(object sender, System.EventArgs e)
  {
   // Start a new workbook in Excel.
   objExcel = new Excel.Application();
   objBooks = (Excel.Workbooks)objExcel.Workbooks;
   objBook = (Excel._Workbook)(objBooks.Add(objOpt));

   // Add data to cells of the first worksheet in the new workbook.
   objSheets = (Excel.Sheets)objBook.Worksheets;
   objSheet = (Excel._Worksheet)(objSheets.get_Item(1));
   objRange = objSheet.get_Range("A1", objOpt);
   objRange.set_Value(objOpt,"Last Name");
   objRange = objSheet.get_Range("B1", objOpt);
   objRange.set_Value(objOpt,"First Name");
   objRange = objSheet.get_Range("A2", objOpt);
   objRange.set_Value(objOpt,"shao");
   objRange = objSheet.get_Range("B2", objOpt);
   objRange.set_Value(objOpt,"zhidong");

   // Apply bold to cells A1:B1.
   objRange = objSheet.get_Range("A1", "B1");
   objFont = objRange.Font;
   objFont.Bold=true;

   // Save the workbook and quit Excel.
   objBook.SaveAs(strSampleFolder + "Book1.xls", objOpt, objOpt,
    objOpt, objOpt, objOpt, Excel.XlSaveAsAccessMode.xlNoChange,
    objOpt, objOpt, objOpt, objOpt, objOpt);
   objBook.Close(false, objOpt, objOpt);
   objExcel.Quit();
  }

使用者控制元件適用於:
–頁面上的重複元素,比如標題、菜
單、登入控制元件等。
–將重複元素封裝到使用者控制元件中,減
少每頁的程式碼量

主頁面新增控制元件:

<%@ Register TagPrefix="uc1" TagName="MikeCatCtr" Src="MikeCatCtr.ascx" %>

private void Page_Load(object sender, System.EventArgs e)
  {
   Page.Controls.Add(new HtmlGenericControl("hr"));

   Control c1 = LoadControl("MikeCatCtr.ascx");
   ((MikeCatCtr)c1).Category = "business";
   Page.Controls.Add(c1);

   Page.Controls.Add(new HtmlGenericControl("hr"));

   Control c2 = LoadControl("MikeCatCtr.ascx");
   ((MikeCatCtr)c2).Category = "trad_cook";
   Page.Controls.Add(c2);

   Page.Controls.Add(new HtmlGenericControl("hr"));

   Control c3 = LoadControl("MikeCatCtr.ascx");
   ((MikeCatCtr)c3).Category = "mod_cook";
   Page.Controls.Add(c3);

  }

控制元件頁面:


<%@ Control Language="c#" AutoEventWireup="false" Codebehind="MikeCatCtr.ascx.cs" Inherits="ASPNETUseCom.UseControl.MikeCatCtr" TargetSchema="http://schemas.microsoft.com/intellisense/ie5" %>
<span style="FONT: 12pt verdana">Category:
 <%=Category%>
</span>
<ASP:DataList id="MyDataList" BorderWidth="0" RepeatColumns="2" runat="server">
 <ItemTemplate>
  <table cellpadding="10" style="font: 10pt verdana">
   <tr>
    <td valign="top">
     <b>Title: </b>
     <%# DataBinder.Eval(Container.DataItem, "title") %>
     <br>
     <b>Category: </b>
     <%# DataBinder.Eval(Container.DataItem, "type") %>
     <br>
     <b>Publisher ID: </b>
     <%# DataBinder.Eval(Container.DataItem, "pub_id") %>
     <br>
     <b>Price: </b>
     <%# DataBinder.Eval(Container.DataItem, "price", "$ {0}") %>
    </td>
   </tr>
  </table>
 </ItemTemplate>
</ASP:DataList>


namespace ASPNETUseCom.UseControl
{
 using System;
 using System.Data;
 using System.Drawing;
 using System.Web;
 using System.Web.UI.WebControls;
 using System.Web.UI.HtmlControls;
 using System.Data.SqlClient;
 /// <summary>
 ///  MikeCatCtr 的摘要說明。
 /// </summary>
 public abstract class MikeCatCtr : System.Web.UI.UserControl
 {
  protected System.Web.UI.WebControls.DataList MyDataList;
  private String _category = "";

  public String Category
  {

   get
   {
    return _category;
   }
   set
   {
    _category = value;
    SqlConnection myConnection = new SqlConnection("server=(local);database=pubs;uid=sa;pwd=111");
    SqlDataAdapter myCommand = new SqlDataAdapter("select * from Titles where type='" + _category + "'", myConnection);

    DataSet ds = new DataSet();
    myCommand.Fill(ds, "Titles");

    MyDataList.DataSource = ds.Tables["Titles"].DefaultView;
    MyDataList.DataBind();
   }
  }
  private void Page_Load(object sender, System.EventArgs e)
  {
   // 在此處放置使用者程式碼以初始化頁面
  }

  #region Web Form Designer generated code
  override protected void OnInit(EventArgs e)
  {
   //
   // CODEGEN:該呼叫是 ASP.NET Web 窗體設計器所必需的。
   //
   InitializeComponent();
   base.OnInit(e);
  }
  
  ///  設計器支援所需的方法 - 不要使用
  ///  程式碼編輯器修改此方法的內容。
  /// </summary>
  private void InitializeComponent()
  {
   this.Load += new System.EventHandler(this.Page_Load);

  }
  #endregion
 }
}


?? VS.NET中使用者控制元件的建立
?? 新建ASP.NET Web應用程式
?? 在“專案”選單中選擇“新增Web使用者控制元件”
?? 建立介面元素

設計方式:
– 把*.ascx檔案拖動到*.aspx頁面上,即可新增使用者
控制元件
? 編碼方式
– myTBPlus =
(TextBoxPlus)LoadControl("TextBoxPlus.ascx");
– PlaceHolder1.Controls.Add(myTBPlus);


使用者控制元件小結
? 使用者控制元件使開發人員能夠使用編寫Web 窗體
頁的相同程式設計技巧輕鬆地定義自定義控制元件。
? 作為約定,用.ascx 副檔名指示這樣的
控制元件。
? 使用者控制元件通過Register 指令包括在另一Web
窗體頁中,該指令指定TagPrefix、
TagName 和Src location。
? 註冊了使用者控制元件後,可以像普通的伺服器控
件那樣將使用者控制元件標記放置在Web 窗體頁中
(包括runat=“server” 屬性)。

在包含Web 窗體頁中將使用者控制元件的公共字
段、屬性和方法提升為該控制元件的公共屬性
(標記屬性)和方法。
? 使用者控制元件參與每個請求的整個執行生存
期,並且可以處理自己的事件,封裝來自
包含Web 窗體頁的一些頁邏輯。
? 可以使用System.Web.UI.Page 類的
LoadControl 方法以程式設計方式建立使用者控制元件。
使用者控制元件的型別由ASP.NET 執行庫決定,
遵循約定檔名_副檔名。

實現一個ASP.NET Back控制元件

using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Drawing;

namespace WebControlsEx
{
 /// <summary>
 /// Sends user to the URL of the client's previous request that linked to the current URL.
 /// </summary>
 [ToolboxData("<{0}:BackLink runat=server></{0}:BackLink>")]
 [ToolboxBitmap(typeof(BackLink),"BackLink.bmp")]
 public class BackLink : LinkButton
 {
  public BackLink()
  {
   Text = "Back";
   ToolTip = "Click to go to the previous page";
  }

  protected override void OnClick(EventArgs e)
  {
   Uri backURL = (Uri)Page.Session["Referring URL"];
   Page.Session["Referring URL"] = null;
   if(backURL != null)
   {
    Page.Response.Redirect(backURL.AbsoluteUri);
   }
  }

  protected override void OnLoad(EventArgs e)
  {
   Uri backURL = Page.Request.UrlReferrer;
   if(backURL == null) //No referrer information
   {
    Enabled = false;
    return;
   }
   if(backURL.AbsolutePath != Page.Request.Url.AbsolutePath)
   {
    Page.Session["Referring URL"] =  backURL;
    Enabled = true;
    return;
   }
   else
   {
    object obj = Page.Session["Referring URL"];
    if(obj != null)
    {
     Enabled = true;
    }
   }
   base.OnLoad(e);
  }
 }
}

相關推薦

Asp.net Image控制元件顯示Bitmap生成影象

from:https://blog.csdn.net/qq_29011299/article/details/81137980 using(Bitmap bmp=new Bitmap(300,50))     {    &nbs

ASP.Net控制元件的EnableViewState屬性

在ASP.Net中對各個WebForm控制元件引入以前沒有的EnableViewState屬性。這個屬性究竟有什麼用。我們知道對於WebForm而言,其程式碼是在伺服器端的,以處理客戶端的請求。當用戶通過瀏覽器瀏覽網頁的時候,會對網頁進行某些操作,比如開啟新連結,或單擊某個按

asp net伺服器控制元件button先執行js再執行後臺的方法

                關於button這個伺服器控制元件,我一直想減少它向伺服器提交資料。那些檢測,還是在客戶端實現就好了。這就需要javascript,但是我發現僅僅有javascript還是不夠的。button伺服器控制元件的單擊事件叫“onClick”,所以javascript就無法使用這個事

解決asp.net web控制元件不能拖動的問題

Tools--Options--HTML Designer--CSS Positioning 把change positioning to ......的CheckBox勾上就OK了。 中文版的 工具-->選項-->HTML設計器-->CSS定位-->定位選項-->將使用

ASP.net Menu控制元件動態新增選單項實現許可權控制

      對於動態選單生成,在很多具有許可權控制的專案中非常常見。最近遇到一個需求就是不同使用者具有不同許可權,該許可權是頁面級的,所以需要根據不同使用者的許可權情況動態生成選單項。        首先,我把選單項中的內容先儲存在一個XML裡面,在載入模板頁時只需根據查詢

ASP.NET畫圖控制元件 Chart Control 免費控制元件

.NET3.5中中推出了圖表控制元件,可以同時支援Web和WinForm兩種方式,由於平時很少使用,一直沒有玩玩,閒來無事,簡單研究了下,感覺功能真的很強大,基本上可以滿足各種圖表的應用,感覺這麼好用的東西才研究,真是有些落伍啊,哈哈,想必很多人已經早已玩過,這裡幫大家複

asp.net listbox控制元件的用法 (轉)

實現列表框中項的移位 即:向上移位、向下移位 具體的思路為:建立一個ListBox物件,並把要移位的項先暫放在這個物件中。 如果是向上移位,就是把當前選定項的的上一項的值賦給當前選定的項,然後 把剛才新加入的物件的值,再附給當前選定項的前一項。 具體程式碼為: //定義一

asp.net-ValidationSummary 控制元件-1.1

用於在網頁、訊息框或在這兩者中內聯顯示所有驗證錯誤的摘要 DisplayMode   如何顯示摘要 BulletList  List   SingleParagraph EnableClientScript&n

asp.net-Repeater控制元件-1.1

<asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1"onitemcommand="Repeater1_ItemCommand"> <HeaderTemplate> 編號 

asp.net-DropDownList 控制元件-1.1

DropDownList 控制元件介紹 下拉列表,每個可選項都是由 ListItem 元素定義 SelectedIndex   可選項的索引號 OnSelectedIndexChanged 當被選專案的 index 被更改時被執行的函式的名稱 runat   規定該控制元

表單驗證ASP.NET RequiredFieldValidator 控制元件使用方法及使用例項

例項 w3school例項: <html> <body> <form runat="server"> 名稱:<asp:TextBox id="name" runat="server" /> <br /> 年齡:<asp:TextBox id

asp.net日期控制元件

引用檔案 <script src="js/My97DatePicker/WdatePicker.js" type="text/javascript"></script> 目錄詳情 常規呼叫 <input id="d11" type="text" class="text

asp.net image控制元件顯示Bitmap

可以藉助base64直接顯示圖片,避免image.imageUrl="xxx.aspx"。程式碼如下: Bitmap bmp = new Bitmap(200, 200); using (var g = Graphics.From

windows訊息機制與ASP.net winform控制元件訊息傳遞之滑鼠點選click事件

window系統是一個訊息驅動的系統, windows作業系統本身有自己的訊息佇列,訊息迴圈,它捕捉鍵盤,滑鼠的動作生成訊息,並將這個訊息傳給應用程式的訊息佇列。 當用戶用滑鼠click桌面時,其實使用者是不能直接接觸到某個控制元件的。表面上看,的確是使用者用

asp.net Repeater控制元件的使用方法

今天學習了,Repeater控制元件 repeater繫結資料:  protected void Page_Load(object sender, EventArgs e)     {        

ASP.NET驗證控制元件詳細使用解釋

ASP.NET是微軟推出的下一代WEB開發工具,我們來看看ASP.NET的驗證控制元件,感受ASP.NET的強大功能。 有了ASP.NET,你不但可以輕鬆的實現對使用者輸入的驗證,而且,還可以選擇驗證在伺服器端進行還是在客戶端進行,再也不必考慮那麼多了,程式設計師們可以將重要

ASP.net驗證控制元件

       ASP.net提供了6種驗證控制元件,這些控制元件不但可以使程式設計師輕鬆地實現對使用者輸入的驗證,而且還可以選擇驗證在伺服器端進行還是在客戶端進行。這6種驗證控制元件分別是: 1.RequiredFieldValidator控制元件(空值驗證):驗證控制元

ASP.NET-驗證控制元件

開始驗證控制元件之前,把一個非常常見的錯誤先提出來。“VS2012驗證控制元件出現WebForms UnobtrusiveValidationMode 需要“jquery”ScriptResourceMapping的問題”如圖這樣。。相信很多人都遇到過這樣的問題。。解決辦法:

ASP.NET使用者控制元件

ASP.NET中操作Word檔案? using System;using System.Collections;using System.ComponentModel;using System.Data;using System.Drawing;using System.W

ASP.NET 伺服器控制元件中插入客戶端指令碼(自定義控制元件)

用於:Microsoft® ASP.NET前提條件:本文假設讀者熟悉 ASP.NET。難度: 2摘要:儘管從技術角度講,ASP.NET 伺服器控制元件的所有功能都可以在伺服器端執行,但通常情況下通過新增客戶端指令碼可以大大增強伺服器控制元件的可用性。本文將探討伺服器控制元件傳