.net中一些所封装的类(Control) 选择自 verybigmouthz 的 Blog

本文档展示了如何在.NET环境中封装常见的UI控件,如TextBox、DropDownList和DataGrid等,提供了一组实用的方法来操作这些控件。内容包括字符串加密、数据绑定、下拉列表创建、文本框值复制以及树形视图的生成等。此外,还涵盖了Session检查、响应处理和文件上传等实用功能。
摘要由CSDN通过智能技术生成
 

using System;
using System.IO;
using System.Web;
using System.Data;
using System.Web.UI;
using System.Collections;
using System.Web.UI.WebControls;
using Microsoft.Web.UI.WebControls;
using System.Drawing;
using System.Text; 
using OWC;
 
namespace JSL.MVC.Page
{
 /// <summary>
 /// Controls 的摘要说明。
 /// </summary>
 public class Controls
 {
  private Controls()
  {
  }
  #region string
  public static string Encrypto(string Source)
  {
   System.Security.Cryptography.HashAlgorithm HashCryptoService;
   HashCryptoService = new System.Security.Cryptography.SHA1Managed();

   byte[] bytIn = System.Text.UTF8Encoding.UTF8.GetBytes(Source);
   byte[] bytOut = HashCryptoService.ComputeHash(bytIn);
   return Convert.ToBase64String(bytOut);
  }
  #endregion

  #region BaseDataList
  public void BindBaseList(System.Web.UI.WebControls.BaseDataList bdl_object,DataSet ds, string tbName)
  {
   bdl_object.DataSource=ds.Tables[tbName];
   bdl_object.DataBind();
  }

  public void BindBaseList(System.Web.UI.WebControls.BaseDataList bdl_object,DataTable dt)
  {
   bdl_object.DataSource=dt;
   bdl_object.DataBind();
  }
  #endregion

  #region DropDownList
  public static void CreateDropDownList(DropDownList ddl_object, DataTable dt, string s_text,string s_value)
  {
   ddl_object.DataSource = dt;
   ddl_object.DataTextField  = s_text;
   ddl_object.DataValueField = s_value;
   ddl_object.DataBind();
  }

  public static void CreateDropDownList(DropDownList ddl_object, DataSet ds, string s_text,string s_value)
  {
   ddl_object.DataSource     =  ds;
   ddl_object.DataTextField  = s_text;
   ddl_object.DataValueField = s_value;
   ddl_object.DataBind();
  }

  public static void CreateDropDownList(DropDownList ddl_object, string s_text, string s_value)
  {
   ListItem li = new ListItem(s_text, s_value);
   ddl_object.Items.Add(li);
  }

  public static void CreateDropDownList(DropDownList ddl_object, string[] s_text, string[] s_value)
  {
   for (int i = 0; i < s_text.Length; i++)
   {
    ListItem li = new ListItem(s_text[i],s_value[i]);
    ddl_object.Items.Add(li);
   }
  }

  public static void CopyDropDownList(DropDownList ddl_source, DropDownList ddl_target)
  {
   ddl_target.Items.Clear();
   ddl_target.DataTextField  = ddl_source.DataTextField;
   ddl_target.DataTextFormatString = ddl_source.DataTextFormatString;
   ddl_target.DataValueField = ddl_source.DataValueField;
   for (int i = 0; i < ddl_source.Items.Count; i++)
   {
    ddl_target.Items.Add(ddl_source.Items[i]);
   }
  }

  public static void SetDropDownListValue(DropDownList ddl_object, string s_value)
  {
   foreach(ListItem li in ddl_object.Items)
   {
    if (li.Value == s_value)
    {
     ddl_object.SelectedValue = s_value;
     break;
    }
    else
    {
     ddl_object.SelectedValue = null;
    }
   }
  }

  public static void SetDropDownListValue(DropDownList[] ddl_object,string[] s_value)
  {
   int i = 0;
   foreach(DropDownList ddl in ddl_object)
   {
    SetDropDownListValue(ddl,s_value[i++]);
   }
  }
  #endregion

  #region TextBox
  protected static void CopyTextBox(TextBox tb_source, TextBox tb_target)
  {
   tb_target.Text = tb_source.Text;
  }

  protected static void SetTextBoxValue(TextBox tb_object, string s_value)
  {
   tb_object.Text = s_value;
  }

  protected static void SetTextBoxValue(TextBox[] tb_object,string[] s_value)
  {
   int i = 0;
   foreach(TextBox dt in tb_object)
   {
    SetTextBoxValue(dt,s_value[i++]);
   }
  }
  #endregion

  #region TreeView
  /// <summary>
  /// 创建树形结构
  /// </summary>
  /// <param name="dt">要传入的数据表</param>
  /// <param name="treenodecollection">树结点容器集合</param>
  /// <param name="MapNodeData">结点主键</param>
  /// <param name="MapText">显示内容</param>
  /// <param name="MapNavigateURL">导航路径</param>
  /// <param name="ImageURL">图片地址</param>
  /// <param name="ParentName">结点父键</param>
  /// <param name="RelationOperation">结点过滤关系运算符</param>
  /// <param name="ParentValue">运算比较值</param>
  /// <param name="ParentValueType">比较值类型</param>
  /// <param name="SortExpression">排序方式</param>
  /// <param name="bcheckbox">选择框显示与否</param>
  /// <param name="MapStatus">选择框的内容</param>
  /// <param name="MapTarget">用于树保存时的分层标记</param>
  public static void  CreateViewTree(DataTable dt, TreeNodeCollection treenodecollection,
   string MapNodeData, string MapText, string MapNavigateURL, string ParentName,
   string RelationOperation, string ParentValue, string ParentValueType,string SortExpression,
   bool bcheckbox, string MapStatus, string MapTarget)
  {
   if (ParentValueType == "'") ParentValue = ParentValueType + ParentValue + ParentValueType;

   string str = ParentName + RelationOperation + ParentValue;
   DataRow[] drs = dt.Select( ParentName + RelationOperation + ParentValue, SortExpression);
   foreach(DataRow dr in drs)
   {
    TreeNode treenode    = new TreeNode();
    treenode.Text      = dr[MapText].ToString();
    try
    {
     treenode.NavigateUrl = dr[MapNavigateURL].ToString();
    }
    catch{treenode.NavigateUrl = "";}
    treenode.CheckBox    = bcheckbox;
    if (MapTarget != "" && MapTarget != null) treenode.TreeNodeXsltSrc  = dr[MapTarget].ToString();
    if (treenode.CheckBox)
    {
     bool  bcheck ;
     try
     {
      bcheck = (dr[MapStatus].ToString() == "1");
     }
     catch{bcheck = false;}
     treenode.Checked    =bcheck ;
    }
    string  treenodenodedata = treenode.NodeData    = dr[MapNodeData].ToString();
    treenodecollection.Add(treenode);
    if (ParentValueType == "'") treenodenodedata =ParentValueType+ treenodenodedata + ParentValueType;

    DataRow[] tmpdrs = dt.Select(ParentName + RelationOperation + treenodenodedata, SortExpression);
    if ( tmpdrs.Length > 0)
    {
     CreateViewTree(dt,treenode.Nodes,MapNodeData,MapText,MapNavigateURL,ParentName,RelationOperation,treenode.NodeData,ParentValueType,SortExpression,bcheckbox,MapStatus,MapTarget);
    }
   }
  }
  #endregion

  #region Session
  public static bool CheckSession(string CheckSession,System.Web.UI.Page WebPage)
  {
   bool b=false;
   foreach(string sTmp in WebPage.Session.Keys)
   {
    if (sTmp.Equals(CheckSession))
    {
     b = true;
     break;
    }
   }
   return b;
  }

  public static void CheckSession(string CheckSession,System.Web.UI.Page WebPage,string ErrorPage)
  {
   bool b=false;
   foreach(string sTmp in WebPage.Session.Keys)
   {
    if (sTmp.Equals(CheckSession))
    {
     b = true;
     break;
    }
   }

   if (!b) WebPage.Response.Redirect(ErrorPage);
  }
  #endregion

  #region Reponse
  public static  void ResponsePage(System.Web.UI.Page WebPage,string sUrl,string sChoose)
  {
   try
   {
    switch(sChoose)
    {
     case "1":   
      WebPage.Response.Write("<script>window.location.href='"+sUrl+"';</script>");
      break;
     case "2":
      WebPage.Server.Transfer(sUrl );
      break;
     case "3":
      WebPage.Response.Redirect(sUrl);
      break;
     case "debug":
      WebPage.Response.Write("<script>alert('"+sUrl+"')</script>");
      break;
     default :
      WebPage.Response.Write(sUrl);
      break;
    }
   }
   catch
   {
    WebPage.Response.Write("Error URL:"+sUrl);
   }
  }
  #endregion

  #region Server To Client JAVASCRIPT
  public void javaScript(string alert ,System.Web.UI.Page WebPage)
  {
   WebPage.RegisterStartupScript("script","<script language=javascript>alert('"+alert+"');</script>");
  }
  #endregion

  #region Split DataGrid
  public  static string[] SplitPage(System.Web.UI.Page CurPage,DataGrid dgSplit,DataTable dtSplit,int iRowsSplitPage )
  {
   string PAGE_OBJECT = "page"+dgSplit.ID;
   string sPage = "1";
   int iCurPage = 1;
   if (CurPage.Request.QueryString[PAGE_OBJECT]!=null) sPage = CurPage.Request.QueryString[PAGE_OBJECT].ToString();
   try   { iCurPage = Int32.Parse(sPage); }
   catch  { iCurPage = 1; }
   
   int start = (int)((iCurPage - 1) * iRowsSplitPage);
   if (start < 0) start = 0;
   int to = (int)(iCurPage * iRowsSplitPage);

   DataView dv = dtSplit.DefaultView;
   int iResults = dv.Count;
   int a1=0;
   int iPageCount = Math.DivRem(iResults,iRowsSplitPage,out a1);
   if (a1>0) iPageCount++; 
   if (iCurPage >  iPageCount || iCurPage<= 0)  iCurPage = 1;
   if (iCurPage == iPageCount)    to = dv.Count; 
   
   DataTable dt = dv.Table.Clone();
   DataRow dr;
   for(int i=start;i<iResults;i++)
   {
    if(i<to)
    {
     dr = dt.NewRow();
     for(int k=0;k<dv.Table.Columns.Count;k++)
     {
      //      if (k==0)
      //       dr[k] = iResults - i;
      //      else
      dr[k] = dv.Table.Rows[i][k];
     }
     dt.Rows.Add(dr);
    }
   }
   dt.AcceptChanges();

   DataView dvResult = new DataView(dt);
   dgSplit.DataSource = dvResult;
   dgSplit.DataBind();
   //   dgSplit.Visible = !(dvResult.Count == 0);

   string strNav = "";
   int iEndPage = iPageCount;
   strNav += "<a href='?"+PAGE_OBJECT+"="+ 1.ToString() + "'>首  页</a>  ";
   if (iCurPage>1)  
   { 
    strNav += "<a href='?"+PAGE_OBJECT+"="+ (iCurPage - 1).ToString() + "'>上  页</a>  ";
   }
   else
   {
    strNav += " 上  页 "; 
   }
   if (iCurPage>11) 
   {
    strNav += "<a href='?"+PAGE_OBJECT+"=1'>1</a> ...";
   }
   if (iPageCount > iCurPage + 10)  iEndPage = iCurPage + 10;
   for (int i = iCurPage - 10; i < iEndPage + 1; i++)
   {
    if(i>=1)
    {
     if (i==iCurPage)
     {
      strNav +="<font color=#990000><strong>"+ i.ToString() + "</strong></font> "; 
     }
     else
     {
      strNav += "<a href='?"+PAGE_OBJECT+"="+ i.ToString() + "'>"+ i.ToString() +"</a> "; 
     }
    }
   }

   if ((iCurPage+10) < iPageCount)
    strNav += "... <a href='?"+PAGE_OBJECT+"="+ iPageCount.ToString() + "'>"+ iPageCount.ToString() + "</a>"; 
   if (iCurPage < iPageCount) 
   {
    strNav += " <a href='?"+PAGE_OBJECT+"="+ (iCurPage+1).ToString() + "'>下  页</a>  "; 
   }
   else
   {
    strNav += " 下  页 "; 
   }
   strNav += " <a href='?"+PAGE_OBJECT+"="+ (iPageCount).ToString() + "'>末  页</a>  "; 


   string[] strNavResult = new string[2]; 
   strNavResult[0] = strNav;
   strNavResult[1] = "[共"+ iResults.ToString() +"条][第"+ (start+1).ToString() +"-"+ to.ToString()  +"条][共"+ iPageCount.ToString() +"页]" ;

   return strNavResult;
  }
  #endregion

  #region DataGrid To Excel
  public static void DataGrid2Excel(DataGrid dg, string filename)
  {
   OWC.SpreadsheetClass xlsheet = new SpreadsheetClass();
   int ihead = 0;
   foreach(DataGridColumn dgc in dg.Columns)
   {
    xlsheet.ActiveSheet.Cells[1, ihead + 1] = dgc.HeaderText;
//    xlsheet.get_Range(xlsheet.Cells[1, 1], xlsheet.Cells[1, i + 1]).Font.Bold = true;
//    xlsheet.get_Range(xlsheet.Cells[1, 1], xlsheet.Cells[1, i + 1]).Font.Color = "red";
    ihead++;
    }

   int icols = dg.Items[0].Cells.Count;
   for (int j = 0; j < dg.Items.Count; j++)
   {
    for (int i = 0; i < icols; i++)
    {
     xlsheet.ActiveSheet.Cells[j + 2, i + 1] = dg.Items[j].Cells[i].Text.Replace("&nbsp;"," ");
    }
   }

   try
   {
    //System.Web.HttpContext.Current.Server.MapPath
    xlsheet.ActiveSheet.Export(filename, OWC.SheetExportActionEnum.ssExportActionOpenInExcel);
   }
   catch
   {
    return;
   }
  }
  #endregion

  #region HostName
  public static string GetHostName()
  {
   return System.Net.Dns.GetHostName();
  }

  public static System.Net.IPHostEntry GetHostByName(string hostname)
  {
   return System.Net.Dns.GetHostByName(hostname);
  }

  #endregion

  #region Process
  private void KillProcess(string processName)
  {
   System.Diagnostics.Process myproc= new System.Diagnostics.Process();
   //得到所有打开的进程
   try
   {
    foreach (System.Diagnostics.Process thisproc in System.Diagnostics.Process.GetProcessesByName(processName))
    {
     if(!thisproc.CloseMainWindow())
     {
      thisproc.Kill();
     }
    }
   }
   catch(Exception Exc)
   {
    ;
   }
  }
  #endregion

  #region Execel
  /// <summary>
  /// Class to export a number of web controls to Excel.
  /// Pass BuildExcelTable your control, then call ExportToBrowser() to write down to the browser. 
  /// This will open a new instance of Excel.
  /// If you want to open the Excel file in the current browser window, comment out the Response.AddHEader line.
  /// </summary>
  public class ExcelWriter
  {
   protected string m_szExcelHtnml;
   private string szFileName;
   private bool bStripBreaks;

   public void BuildExcelTable(object DG)
   { 
    //Header Styles
    StringWriter sw = new StringWriter();
    HtmlTextWriter ht = new HtmlTextWriter(sw);
 
    string sObjectTypeName = DG.GetType().Name.ToString();
    switch (sObjectTypeName)
    {
     case "DataGrid":
      ((DataGrid)DG).ShowHeader = true;
      ((DataGrid)DG).RenderControl(ht);
      break;
     case "DataList":
      ((DataList)DG).RenderControl(ht);
      break;
     case "TextBox":
      ((TextBox)DG).RenderControl(ht);
      break;
     case "Label":
      ht.Write(((Label)DG).Text);
      break;
     case "TableRow":
      ht.Write("<table>");
      ((TableRow)DG).RenderControl(ht);
      ht.Write("</table>");
      break;
     case "Table":
      ((Table)DG).RenderControl(ht);     
      break;
     default:
      break;
    }
     
    m_szExcelHtnml += sw.ToString();
   
   }

   public void ExportToBrowser()
   {
    if(szFileName == "" || szFileName == null)
    {
     szFileName = "ExcelFile.xls";
    }

    if(bStripBreaks)
    {
     m_szExcelHtnml = m_szExcelHtnml.Replace("<br>", " ");
     m_szExcelHtnml = m_szExcelHtnml.Replace("<BR>", " ");
    }
    HttpContext.Current.Response.Clear();
    HttpContext.Current.Response.ClearHeaders();
    HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + szFileName);
    HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";
    HttpContext.Current.Response.Write(m_szExcelHtnml);
    HttpContext.Current.Response.Flush();
    HttpContext.Current.Response.End();
   }

   public string FileName
   {
    get
    {
     return szFileName;
    }
    set
    {
     szFileName = value;
    }
   }

   public bool StripBreakTags
   {
    get
    {
     return bStripBreaks;
    }
    set
    {
     bStripBreaks = value;
    }
   }
  }
  #endregion

  #region PDF
  public  class  PDFGenerator 
  { 
   static  float  pageWidth  =  594.0f; 
   static  float  pageDepth  =  828.0f; 
   static  float  pageMargin  =  30.0f; 
   static  float  fontSize  =  20.0f; 
   static  float  leadSize  =  10.0f; 
    static  StreamWriter  pPDF=new  StreamWriter("E://myPDF.pdf"); 
    static  MemoryStream  mPDF=  new  MemoryStream(); 
    static  void  ConvertToByteAndAddtoStream(string  strMsg) 
   { 
    Byte[]  buffer=null; 
    buffer=ASCIIEncoding.ASCII.GetBytes(strMsg); 
    mPDF.Write(buffer,0,buffer.Length);   
    buffer=null; 
   } 
 
   static  string  xRefFormatting(long  xValue) 
   { 
    string  strMsg  =xValue.ToString(); 
    int  iLen=strMsg.Length; 
    if  (iLen<10) 
    { 
     StringBuilder  s=new  StringBuilder(); 
     int  i=10-iLen; 
     s.Append('0',i); 
     strMsg=s.ToString()  +  strMsg; 
    } 
    return  strMsg; 
   } 
 
   static  void  Main(string[]  args) 
   { 
    ArrayList  xRefs=new  ArrayList(); 
    //Byte[]  buffer=null; 
    float  yPos  =0f; 
    long  streamStart=0; 
    long  streamEnd=0; 
    long  streamLen  =0; 
    string  strPDFMessage=null; 
    //PDF文档头信息 
    strPDFMessage="%PDF-1.1/n"; 
    ConvertToByteAndAddtoStream(strPDFMessage); 
 
    xRefs.Add(mPDF.Length); 
    strPDFMessage="1  0  obj/n"; 
    ConvertToByteAndAddtoStream(strPDFMessage); 
    strPDFMessage="<<  /Length  2  0  R  >>/n"; 
    ConvertToByteAndAddtoStream(strPDFMessage); 
    strPDFMessage="stream/n"; 
    ConvertToByteAndAddtoStream(strPDFMessage); 
    PDF文档描述 
    streamStart=mPDF.Length; 
    //字体 
    strPDFMessage="BT/n/F0  "  +  fontSize  +"  Tf/n"; 
    ConvertToByteAndAddtoStream(strPDFMessage); 
    //PDF文档实体高度 
    yPos  =  pageDepth  -  pageMargin; 
    strPDFMessage=pageMargin  +  "  "  +  yPos  +"  Td/n"  ; 
    ConvertToByteAndAddtoStream(strPDFMessage); 
    strPDFMessage=  leadSize+"  TL/n"  ; 
    ConvertToByteAndAddtoStream(strPDFMessage); 
 
    //实体内容 
    strPDFMessage=  "(http://www.wenhui.org)Tj/n"  ; 
    ConvertToByteAndAddtoStream(strPDFMessage); 
    strPDFMessage=  "ET/n"; 
    ConvertToByteAndAddtoStream(strPDFMessage); 
    streamEnd=mPDF.Length; 
 
    streamLen=streamEnd-streamStart; 
    strPDFMessage=  "endstream/nendobj/n"; 
    ConvertToByteAndAddtoStream(strPDFMessage); 
    //PDF文档的版本信息 
    xRefs.Add(mPDF.Length); 
    strPDFMessage="2  0  obj/n"+  streamLen  +  "/nendobj/n"; 
    ConvertToByteAndAddtoStream(strPDFMessage); 
 
    xRefs.Add(mPDF.Length); 
    strPDFMessage="3  0  obj/n<</Type/Page/Parent  4  0  R/Contents  1  0  R>>/nendobj/n"; 
    ConvertToByteAndAddtoStream(strPDFMessage); 
 
    xRefs.Add(mPDF.Length); 
    strPDFMessage="4  0  obj/n<</Type  /Pages  /Count  1/n"; 
    ConvertToByteAndAddtoStream(strPDFMessage); 
    strPDFMessage="/Kids[/n3  0  R/n]/n"; 
    ConvertToByteAndAddtoStream(strPDFMessage); 
    strPDFMessage="/Resources<</ProcSet[/PDF/Text]/Font<</F0  5  0  R>>  >>/n"; 
    ConvertToByteAndAddtoStream(strPDFMessage); 
    strPDFMessage="/MediaBox  [  0  0  "+  pageWidth  +  "  "  +  pageDepth  +  "  ]/n>>/nendobj/n"; 
    ConvertToByteAndAddtoStream(strPDFMessage); 
 
    xRefs.Add(mPDF.Length); 
    strPDFMessage="5  0  obj/n<</Type/Font/Subtype/Type1/BaseFont/Courier/Encoding/WinAnsiEncoding>>/nendobj/n"; 
    ConvertToByteAndAddtoStream(strPDFMessage); 
 
    xRefs.Add(mPDF.Length); 
    strPDFMessage="6  0  obj/n<</Type/Catalog/Pages  4  0  R>>/nendobj/n"; 
    ConvertToByteAndAddtoStream(strPDFMessage); 
 
    streamStart=mPDF.Length; 
    strPDFMessage="xref/n0  7/n0000000000  65535  f  /n"; 
    for(int  i=0;i<xRefs.Count;i++) 
    { 
     strPDFMessage+=xRefFormatting((long)  xRefs[i])+"  00000  n  /n"; 
    } 
    ConvertToByteAndAddtoStream(strPDFMessage); 
    strPDFMessage="trailer/n<</n/Size  "+  (xRefs.Count+1)+"/n/Root  6  0  R/n>>/n"; 
    ConvertToByteAndAddtoStream(strPDFMessage); 
 
    strPDFMessage="startxref/n"  +  streamStart+"/n%%EOF/n"; 
    ConvertToByteAndAddtoStream(strPDFMessage); 
    mPDF.WriteTo(pPDF.BaseStream); 
 
    mPDF.Close(); 
    pPDF.Close(); 
   } 
  }

  #endregion

  #region Up Load Fille
  public  static string UpFile(System.Web.UI.HtmlControls.HtmlInputFile infile, string savefilepath, string savefilename, string choose)
  {
   string filename = infile.PostedFile.FileName;
   if (infile.PostedFile!=null && infile.Value != "" )
   {
    int i;
    switch (choose)
    {
     case ".":
      i = filename.LastIndexOf(".");
      savefilename += filename.Substring(i);
      break;
     default:
      i = filename.LastIndexOf("/");
      if (i <= 0)  i = filename.LastIndexOf("//");
      savefilename += choose + filename.Substring(i + 1);
      break;
    }
    if (savefilepath.EndsWith("/") || savefilepath.EndsWith("//"))
     filename = savefilepath + savefilename;
    else
     filename = savefilepath + "/" + savefilename;
    savefilepath = System.Web.HttpContext.Current.Server.MapPath(filename);
    infile.PostedFile.SaveAs(savefilepath);
    return filename;
   }
   else
   {
    return null;
   }
  }
  #endregion
 }
}


相关文章
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值