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. Python3 open() 函数

    Python3 open() 函数  Python3 内置函数 Python open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 ...

  2. Java的线程同步

    synchronized获取的锁是对象,而不是函数或语句块. 项目结构 资源类 import java.util.concurrent.TimeUnit; public class myResourc ...

  3. 利用Google Chrome开发插件,在网页中植入js代码

    Google Chrome是一个很强大的浏览器,提供了各种各样的插件,大大提升了使用了的效率,比如vimium.honx等. Google在提供这些插件的同时还允许用户开发自己的插件. 最近在写js的 ...

  4. JS 图片切换

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="zzzz.aspx.cs&quo ...

  5. 阅读笔记-A Message To Garcia

    A Message To Garcia 主动性:世界会给你以厚报,既有金钱也有荣誉,只要你具备这样一种品质,那就是主动.就是不用别人告诉你,你就能出色的完成工作. 人类社会的最基本的行为法则----互 ...

  6. js深拷贝、浅拷贝

    浅拷贝: 只针对当前对象的属性进行拷贝,若当前对象的属性是引用类型时,这个不考虑,不进行拷贝.若属性是引用类型,拷贝后引用的是地址,如果进行更改,会影响拷贝的原对象属性. 深拷贝:针对当前对象的数据的 ...

  7. Linux安装和配置Vim7.4

    一.简介 Vim是一个类似于Vi的文本编辑器,不过在Vi的基础上增加了很多新的特性,Vim普遍被推崇为类Vi编辑器中最好的一个,事实上真正的劲敌来自Emacs的不同变体.1999 年Emacs被选为L ...

  8. 用递归方法求 n!

    #include <iostream> using namespace std; #define LL long long LL fac(int n) { LL f; || n == ) ...

  9. Alien::BatToExeConverter 模块应用

    ##  DOS 下批量任务转换成exe二进制可执行文件 Convert a DOS Batch Script to an Executable Alien::BatToExeConverter::ba ...

  10. 2018.09.24 codeforces 1051F. The Shortest Statement(dijkstra+lca)

    传送门 这真是一道一言难尽的题. 首先比赛的时候居然没想出来正解. 其次赛后调试一直调不出来最后发现是depth传错了. 其实这是一道简单题啊. 对于树边直接lca求距离. 由于非树边最多21条. 因 ...