程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#發現之旅第三講 使用C#開發基於XSLT的代碼生成器(1)(4)

C#發現之旅第三講 使用C#開發基於XSLT的代碼生成器(1)(4)

編輯:關於C語言

在RefreshSystem方法 中,首先獲得數據庫結構信息對象,遍歷其中的表結構信息對象,向數據表名下列列表填充 項目。

遍歷網站目錄下的所有以下劃線開頭的XSLT文件,將其文件名填充到XSLT模板 下拉列表中。

這裡使用了另外一個函數GetInfo,該函數就是獲得系統使用的數據庫 結構信息對象,它是緩存在session中的對象,它使用了程序目錄下的演示數據庫作為數據結 構信息來源。

頁面代碼中還有強制刷新系統按鈕事件處理。

/// <summary>
/// 刷新系統按紐事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void cmdRefresh_Click(object sender, System.EventArgs e)
{
  this.Session["info"] = null;
  this.cboTable.Items.Clear();
  this.cboXSLT.Items.Clear ();
  RefreshSystem( );
}//private void cmdRefresh_Click(object sender, System.EventArgs e)

這個處理過程比較簡單,將緩存的數據結構信 息對象刪除掉,清空數據表名列表和模板列表,然後調用RefreshSystem方法刷新界面。

這個頁面最重要的代碼就是自動生成並顯示代碼的過程了。其C#代碼為

/// 創建代碼按紐事件 
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void cmdCreate_Click(object sender, System.EventArgs e)
{
DataBaseInfo info = this.GetInfo();
string XML = null ;
if( cboTable.SelectedIndex == 0 )
{
xml = GetXMLString( info );
}
else
{
TableInfo table = info.Tables[ this.cboTable.SelectedValue ] ;
if( table == null )
{
this.lblResult.Text = "請選擇一個表";
return ;
}
xml = GetXMLString( table );
}
string Html = "";
if( cboXSLT.SelectedIndex <= 0 )
{
// 沒有使用任何模板,直接顯示XML源代碼
Html = @"<textarea
wrap=off
readonly
style='border:1 solid black;
overflow=visible;
background-color:#dddddd'>"
+ XML + "</textarea>";
}
else
{
// 啟動了XSLT模板,執行XSLT轉換
System.Xml.Xsl.XslTransform transform = new System.XML.Xsl.XslTransform();
transform.Load( this.Server.MapPath( this.cboXSLT.SelectedValue ) + ".xslt" );
System.IO.StringWriter writer = new System.IO.StringWriter();
System.Xml.XmlDocument doc = new System.Xml.XMLDocument();
doc.LoadXml( XML );
transform.Transform( doc , null , writer , null );
writer.Close();
Html = writer.ToString();
}
this.lblResult.Text = "<b>共生成 "
+ Html.Length
+ " 個字符</b><br />\r\n" + Html ;
}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved