ASP.NET开发简单实用的方法

一、打印和导出

打印和导出EXCEL在目前ASP.NET开发中可以说是必要的,有时候针对不同数据难易程度下,用有效快速的方法是解决办法的有效途径之一。

1.打印

后台:

/// <summary>
/// 调用GOOGLE自带打印格式
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Btn_Printf_Click(object sender, EventArgs e)
{
this.Page.ClientScript.RegisterStartupScript(this.Page.GetType(), "", "<script>printdiv();window.close();</script>", false);//后台打印事件
}

前台:

<script type="text/javascript">

function printdiv() {
bdhtml = window.document.body.innerHTML;
sprnstr = "<!--startprint-->";//开始打印标记
eprnstr = "<!--endprint-->";//结束打印标记
prnhtml = bdhtml.substr(bdhtml.indexOf(sprnstr) + 17);
prnhtml = prnhtml.substring(0, prnhtml.indexOf(eprnstr));
window.document.body.innerHTML = prnhtml;
window.print();
window.document.body.innerHTML = bdhtml;
closeWindow();
}
function closeWindow() {
setTimeout("window.opener=null;window.open('','_self');window.close();", 1000); //打印后延时2秒后跳转
}
</script>

2.导出EXCEL

/// <summary>
/// 导出
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Btn_Output_Click(object sender, EventArgs e)
{
var FileName = DateTime.Now.ToString("yyyy-MM-dd");
System.Data.DataTable dt =需要打印数据;
if (dt != null && dt.Rows.Count > 0)
{
CreateExcel_t(dt, FileName);
}
else
{
Response.Write("<script>alert('【系统提示】暂无数据,请先上传数据!')</script>");
return;
}
}

/// <summary>
/// 生成EXCEL
/// </summary>
/// <param name="dt">数据</param>
/// <param name="FileName">生成EXCEL名称</param>
public void CreateExcel_t(DataTable dt, string FileName)
{
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.Charset = "UTF-8";
HttpContext.Current.Response.ContentType = "application/vnd.ms-xls";

HttpContext.Current.Response.AddHeader("content-disposition", "attachment;filename=" + FileName + "导出EXEL名称.xls");
StringBuilder table = new StringBuilder();
//<tr cospan='2' style='text-align:center;'>EXCEL标题</tr>
table.Append("<table><tr>");
for (int j = 0; j < dt.Columns.Count; j++)
{
table.Append("<td style='text-align:center;'>");
table.Append(dt.Columns[j].Caption.ToString());//表格的标题
table.Append("</td>");
}
table.Append("</tr>");
for (int i = 0; i < dt.Rows.Count; i++)
{
table.Append("<tr>");
for (int j = 0; j < dt.Columns.Count; j++)
{
table.Append("<td style='vnd.ms-excel.numberformat:@'>");
table.Append(dt.Rows[i][j].ToString());
table.Append("</td>");
}
table.Append("</tr>");
}
table.Append("</table>");
HttpContext.Current.Response.Write(table);
HttpContext.Current.Response.End();
}

二、AspNetPager翻页

1.方法一

//在aspx网页中

<%@ Register Assembly="AspNetPager" Namespace="Wuqi.Webdiyer" TagPrefix="webdiyer" %>

<webdiyer:AspNetPager ID="AspNetPager1" runat="server" OnPageChanged="AspNetPager1_PageChanged" PageSize="1" CustomInfoHTML="第 <font color='red'><b>%currentPageIndex%</b></font> 页,共 %PageCount% 页,每页显示 %PageSize% 条记录,共 %RecordCount% 条记录" FirstPageText="第一页" PrevPageText="上一页" NextPageText="下一页" LastPageText="最末页" CustomInfoTextAlign="Center" CssClass="white" ShowCustomInfoSection="Left" AlwaysShow=true SubmitButtonText="Go" PageIndexBoxType="DropDownList" ShowBoxThreshold="10" ShowPageIndexBox="Auto" TextAfterPageIndexBox="页" TextBeforePageIndexBox="转到"></webdiyer:AspNetPager>

//在Page_Load中

AspNetPager1.RecordCount = (int)Cqzxw.SqlData.ExecuteScalar("Select count(*) From 表名");

ShowData();

//在数据绑定时

private void ShowData()

{

DataSet ds =Cqzxw.SqlData.ExecuteDataSet("Select * From 表名", AspNetPager1.PageSize * (AspNetPager1.CurrentPageIndex - 1), AspNetPager1.PageSize);

GridView1.DataSource = ds;

GridView1.DataBind();

}

protected void AspNetPager1_PageChanged(object sender, EventArgs e)

{

ShowData();

}

2.方法二

前端

<div style=" text-align:center; margin-top:10%;">
<webdiyer:AspNetPager ID="AspNetPager2" runat="server" BorderStyle="None" FirstPageText="首页" LastPageText="尾页" NextPageText="下一页" PagingButtonSpacing="30px" OnPageChanged="AspNetPager1_PageChanged" PageSize="6" PrevPageText="上一页" SubmitButtonText="转到"></webdiyer:AspNetPager>
</div>

后端

protected void AspNetPager1_PageChanged(object sender, EventArgs e)
{
//ShowData();
aspnetpager();
}

public void aspnetpager()
{
DataTable dt = 需要打印数据;
string Msg = ToJson(dt);
this.Lab_Count.Text = dt.Rows.Count.ToString();
//设置数量为DataTable的行数
AspNetPager2.RecordCount = dt.Rows.Count;
//分页数据源对象
PagedDataSource pds = new PagedDataSource();
//设置为允许分页
pds.AllowPaging = true;
//设置每一页的大小 (ASPNetPager1.PageSize在控件属性里面设置)
pds.PageSize = this.AspNetPager2.PageSize;
//当前页面索引是 aspnetpager控件页面索引-1,因为后者的CurrentPageIndex是1开始
pds.CurrentPageIndex = this.AspNetPager2.CurrentPageIndex - 1;
//设置PageDataSource的数据源(DataView)
pds.DataSource = dt.DefaultView;
//设置Repeater的数据源(是PageDataSource)
Repeater1.DataSource = pds;
//绑定数据
Repeater1.DataBind();
}

三、编写日志

1.写法一

WriteLog(string.Format(@"参数={0}、参数={1}、参数={2}、参数={3}、参数={4}、参数={5}",对应参数, 对应参数,对应参数, 对应参数, 对应参数, 对应参数));//编写日志方法

2.写法二

WriteLog("提示字符串"+需要传递的参数);

/// <summary>
/// 在本地写入错误日志
/// </summary>
private static readonly object writeFile = new object();
/// <summary>
/// 在本地写入错误日志
/// </summary>
/// <param name="exception"></param>
public static void WriteLog(string debugstr)
{
lock (writeFile)
{
FileStream fs = null;
StreamWriter sw = null;

try
{
//string filename = DateTime.Now.ToString("yyyy-MM-dd") + ".txt";
string filename = DateTime.Now.ToString("yyyy-MM-dd") + ".Log.txt";
//服务器中日志目录
//string folder = HttpContext.Current.Server.MapPath("~/Log");
string folder = AppDomain.CurrentDomain.BaseDirectory + @"Log\";
if (!Directory.Exists(folder))
Directory.CreateDirectory(folder);
fs = new FileStream(folder + "/" + filename, System.IO.FileMode.Append, System.IO.FileAccess.Write);
sw = new StreamWriter(fs, Encoding.UTF8);
sw.WriteLine(DateTime.Now.ToString() + " " + debugstr + "\r\n");
}
finally
{
if (sw != null)
{
sw.Flush();
sw.Dispose();
sw = null;
}
if (fs != null)
{
// fs.Flush();
fs.Dispose();
fs = null;
}
}
}
}

四、DataTable解析Json数据

1.DataTable解析Json数据方法一

/// <summary>
/// DataTable解析Json数据【方法一】
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static string ToJson(DataTable dt)
{
StringBuilder jsonString = new StringBuilder();
jsonString.Append("[");
DataRowCollection drc = dt.Rows;
for (int i = 0; i < drc.Count; i++)
{
jsonString.Append("{");
for (int j = 0; j < dt.Columns.Count; j++)
{
string strKey = dt.Columns[j].ColumnName;
string strValue = drc[i][j].ToString();
Type type = dt.Columns[j].DataType;
jsonString.Append("\"" + strKey + "\":");
strValue = StringFormat(strValue, type);
if (j < dt.Columns.Count - 1)
{
jsonString.Append(strValue + ",");
}
else
{
jsonString.Append(strValue);
}
}
jsonString.Append("},");
}
jsonString.Remove(jsonString.Length - 1, 1);
jsonString.Append("]");
return jsonString.ToString();
}

2.DataTable解析Json数据方法二

/// <summary>
/// dataTable转换成Json格式 【方法二】
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static string DataTable2Json(DataTable dt)
{
StringBuilder jsonBuilder = new StringBuilder();
jsonBuilder.Append("[");
for (int i = 0; i < dt.Rows.Count; i++)
{
jsonBuilder.Append("{");
for (int j = 0; j < dt.Columns.Count; j++)
{
jsonBuilder.Append("\"");
jsonBuilder.Append(dt.Columns[j].ColumnName);
jsonBuilder.Append("\":\"");
jsonBuilder.Append(dt.Rows[i][j].ToString());
jsonBuilder.Append("\",");
}
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
jsonBuilder.Append("},");
}
if (dt.Rows.Count > 0)
{
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
}
jsonBuilder.Append("]");
return jsonBuilder.ToString();
}

五、格式化字符型、日期型、布尔型

/// <summary>
/// 格式化字符型、日期型、布尔型
/// </summary>
private static string StringFormat(string str, Type type)
{
if (type == typeof(string))
{
str = String2Json(str);
str = "\"" + str + "\"";
}
else if (type == typeof(DateTime))
{
str = "\"" + str + "\"";
}
else if (type == typeof(bool))
{
str = str.ToLower();
}
else if (type != typeof(string) && string.IsNullOrEmpty(str))
{
str = "\"" + str + "\"";
}
return str;
}

ASP.NET开发常用简单实用的方法的更多相关文章

  1. ASP.NET(C#)常用数据加密和解密方法汇总

    一.            数据加密的概念 1.  基本概念 2.  基本功能 3.  加密形式 二.            数据加密的项目应用和学习 1.  媒体加密:DRM 2.  文件加密:文本 ...

  2. 29个android开发常用的类、方法及接口

    在安卓开发中,我们常常都需要借助各种各样的方法.类和接口来实现相关功能.提升开发效率,但对于初学者而言,什么时候该用什么类.方法和接口呢?下面小编整理了29个,日常开发中比较常用的类.方法.接口及其应 ...

  3. 这两天老是有兄弟问到Vue的登陆和注册,登陆成功留在首页,没有登录回到登录页面,现在我用最简单实用的方法实现(两分钟技就看懂)

    其实登录注册,并且登录一次保持登录的状态,是每个项目都需要实现的功能. 网上也有很多的方法,不过,不是通俗易懂,在这里说一下我自己的方法,非常简单实用核心就是用localStorage存.取数据,这样 ...

  4. Asp.net开发常用的51个非常实用的代码

    1.弹出对话框.点击转向指定页面 Code: Response.Write("<script>window.alert('该会员没有提交申请,请重新提交!')</scrip ...

  5. 开发一个简单实用的android紧急求助软件

    之前女朋友一个人住,不怎么放心,想找一个紧急求助的软件,万一有什么突发情况,可以立即知道.用金山手机卫士的手机定位功能可以知道对方的位置状态,但不能主动发送求助信息,在网上了很多的APK,都是鸡肋功能 ...

  6. ASP.NET中常用重置数据的方法

    aspx: <asp:Repeater ID="rptProlist" runat="server" onitemdatabound="rptP ...

  7. PHP----------php封装的一些简单实用的方法汇总

    1.xml转换成array,格式不对的xml则返回false function xml_parser($str){    $xml_parser = xml_parser_create();    i ...

  8. 使用jQuery创建可删除添加行的动态表格,超级简单实用的方法

    使用jQuery动态的添加和删除表格里面的行,不多说了直接上代码. <!DOCTYPE html> <html> <head> <meta charset=& ...

  9. ASP.NET开发中主要的字符验证方法-JS验证、正则表达式、验证控件、后台验证

    ASP.NET开发中主要的字符验证方法-JS验证.正则表达式.验证控件.后台验证 2012年03月19日 星期一 下午 8:53 在ASP.NET开发中主要的验证方法收藏 <1>使用JS验 ...

随机推荐

  1. 【c++】多层次继承类对象的构造函数参数的传递方法

    #include <iostream.h> //基类CBase class CBase { int a; public: CBase(int na) { a=na; cout<< ...

  2. ubuntu14.04安装opengl

    OpenGL 是一套由SGI公司发展出来的绘图函式库,它是一组 C 语言的函式,用于 2D 与 3D 图形应用程式的开发上. 不可或缺的就是编译器与基本的函式库,如果系统没有安装的话,依照下面的方式安 ...

  3. php多进程中的阻塞与非阻塞

    我们通过pcntl_fork来创建子进程,使用pcntl_wait和pcntl_waitpid来回收子进程. 子进程退出后,父进程没有及时回收,就会产生僵尸进程.   例1: <?php def ...

  4. git format-patch 用法【转】

    本文转载自:http://blog.csdn.net/xzongyuan/article/details/9425739 git format-patch相对于git diff更便于操作,是更新的打包 ...

  5. Spring框架之演示JDBC的模板类

    1. 步骤一:创建数据库的表结构 create database spring_day03; use spring_day03; create table t_account( id int prim ...

  6. java 错误: 找不到或无法加载主类

    这个问题应该很常见的,笔者经常手工编译一些测试代码或者小工具,经常用到 javac和java来编译并运行一些简单的小工具. 以Hello World来测试. HelloWorld.java publi ...

  7. Linux升级Ruby

    一.简介 Ruby 是一种开源的面向对象程序设计的服务器端脚本语言,在 20 世纪 90 年代中期由日本的松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)设计并开发.在 Ruby 社 ...

  8. chrome 调试工具的使用

    Elements chrome devtools 中 Elements panel 是审查 dom 元素和 css 的, 可以实时修改 dom/css. windows: ctrl + shift + ...

  9. C# 如何操作串口

    1.首先要引用  System.IO.Ports using System; using System.Collections.Generic; using System.ComponentModel ...

  10. hdu-1150(二分图+匈牙利算法)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1150 思路:题目中给出两个机器A,B:给出k个任务,每个任务可以由A的x状态或者B的y状态来完成. 完 ...