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. Clustered Index & Non Clustered Index(聚簇索引和非聚簇索引)

    每个表只能有一个聚簇索引,而能有200多个非聚簇索引. 在物理分配上, 每个表的数据都是分配在页上,一个页大概有8k左右,假设一条数据占1000字节的话,那么8000条数据占8000*1k/8k = ...

  2. MyBatis多对多查询

    -------------------siwuxie095                                 MyBatis 多对多查询         以订单和商品为例,即 一个订单可 ...

  3. ASP.NET中修改从数据库获取的datatable中的值

    有些时候,我们从数据库表中获取一个实体的对象,但有些内容并不是最终显示的内容,格式也都是不一样.经过一番尝试,发现datatable中的数值如果跟想要改变的类型不一致,就无法更改,只有添加新列,然后把 ...

  4. TZOJ 4865 统计单词数(模拟字符串)

    描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数. 现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的 ...

  5. iOS codeview

    1.环境配置 oclint:http://oclint.org/ xcpretty:https://github.com/supermarin/xcpretty 使用Mac安装xcpretty过程可能 ...

  6. centos7下编译安装php-7.0.15(PHP-FPM)

    centos7下编译安装php-7.0.15(PHP-FPM) 一.下载php7源码包 http://php.net/downloads.php 如:php-7.0.15.tar.gz 二.安装所需依 ...

  7. 转:从框架看PHP的五种境界及各自的薪资待遇(仅限于二三线城市,一线除外)

    在撰写此文前首先必须申明的是本人不鄙视任何一种框架,也无意于挑起PHP框架间的战争,更没有贬低某个框架使用者的用意,本文纯粹个人的看法.你可以认为我无知也好,或者装逼也好,请不要试着在任何情况下,随便 ...

  8. 解决lhgDialog插件在IE11浏览器的BUG

    项目中用到一款lhgDialog插件,最近在Win7系统IE11浏览器打上最新补丁(KB4012204)后,对话框内容的高度变成默认高度,经过调试,修改了lhgDialog里的iframe高度,问题解 ...

  9. [freeCodeCamp] Start a Nodejs Server - Complete "Make it Modular"

    _/home/ubuntu/.nvm/versions/node/v4.4.5/lib/node_modules/learnyounode/exer cises/make_it_modular/sol ...

  10. [django] Deploy Django Applications Using uWSGI and Nginx on Ubuntu 14.04

    关键点1:chmod-socket=666 (mysite_uwsgi.ini) 关键点2 : 工程目录和虚拟环境目录搞清楚 几个参考: http://uwsgi-docs.readthedocs.i ...