电脑疯子技术论坛|电脑极客社区

微信扫一扫 分享朋友圈

已有 1239 人浏览分享

C# GridView使用技巧

[复制链接]
1239 1
<DIV id=blogDetailDiv style="FONT-SIZE: 16px">GridView实现自定义时间货币等字符串格式 <BR>  在asp.net 2.0中,如果要在绑定列中显示比如日期格式等,如果用下面的方法是显示不了的 <BR><BR>&lt;asp :BoundField DataField="CreationDate" <BR>DataFormatString="{0:M-dd-yyyy}" <BR>HeaderText="CreationDate" /&gt; <BR><BR>主要是由于htmlencode属性默认设置为true,已防止XSS攻击,安全起见而用的,所以,可以有以下两种方法解决 <BR><BR>1、 <BR><BR>&lt;asp :GridView ID="GridView1" runat="server"&gt; <BR>&lt;columns&gt; <BR>&lt;asp :BoundField DataField="CreationDate" <BR>DataFormatString="{0:M-dd-yyyy}" <BR>HtmlEncode="false" <BR>HeaderText="CreationDate" /&gt; <BR>&lt;/columns&gt; <BR>&lt;/asp&gt; <BR><BR>将htmlencode设置为false即可 <BR><BR>另外的解决方法为,使用模版列 <BR><BR>&lt;asp :GridView ID="GridView3" runat="server" &gt; <BR>&lt;columns&gt; <BR>&lt;asp :TemplateField HeaderText="CreationDate" &gt; <BR>&lt;edititemtemplate&gt; <BR>&lt;asp :Label ID="Label1" runat="server" <BR>Text=''&lt;%# Eval("CreationDate", "{0:M-dd-yyyy}") %&gt;''&gt; <BR>&lt;/asp&gt; <BR>&lt;/edititemtemplate&gt; <BR>&lt;itemtemplate&gt; <BR>&lt;asp :Label ID="Label1" runat="server" <BR>Text=’&lt;%# Bind("CreationDate", "{0:M-dd-yyyy}") %&gt;''&gt; <BR>&lt;/asp&gt; <BR>&lt;/itemtemplate&gt; <BR>&lt;/asp&gt; <BR>&lt;/columns&gt; <BR>&lt;/asp&gt; <BR><BR>{0:C}&nbsp;&nbsp;货币; <BR>{0:D4}由0填充的4个字符宽的字段中显示整数; <BR>{0:000.0}四舍五入小数点保留第几位有效数字; <BR>{0:N2}小数点保留2位有效数字;{0:N2}%&nbsp;&nbsp; 小数点保留2位有效数字加百分号; <BR>{0:D}长日期;{0:d}短日期;{0:yy-MM-dd}&nbsp;&nbsp; 例如07-3-25;;{0:yyyy-MM-dd}&nbsp;&nbsp;例如2007-3-25 <BR>GridView一般换行与强制换行 <BR>  设置&lt;asp:BoundField DataField="家庭住址" HeaderText="家庭住址"&nbsp;&nbsp;ItemStyle-Width="100" /&gt; <BR>gridview里有一列绑定的数据很长,显示的时候在一行里面显示,页面拉得很宽。 <BR>原因是连续英文段为一个整体导致的,在RowDataBound中添加上了一句e.Row.Cells[2].Style.Add("word-break", "break-all")就可以。 <BR><BR>如果要给所有的列增加此属性: <BR>protected void Page_Load(object sender, EventArgs e) <BR>&nbsp;&nbsp;&nbsp;&nbsp;{ <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//正常换行 <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GridView1.Attributes.Add("style", "word-break:keep-all;word-wrap:normal"); <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//下面这行是自动换行 <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GridView1.Attributes.Add("style", "word-break:break-all;word-wrap:break-word"); <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!IsPostBack) <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bind();//调用数据绑定即可 <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} <BR>&nbsp;&nbsp;&nbsp;&nbsp;} <BR><BR>GridView加入自动求和求平均值小计 <BR>  private double sum = 0; <BR>protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) <BR>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (e.Row.RowIndex &gt;= 0) <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum += Convert.ToDouble(e.Row.Cells[6].Text); <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if (e.Row.RowType == DataControlRowType.Footer) <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.Row.Cells[5].Text = "总金额为:"; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.Row.Cells[6].Text = sum.ToString(); <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.Row.Cells[3].Text = "平均金额为:"; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.Row.Cells[4].Text = ((int)(sum / GridView1.Rows.Count)).ToString();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} <BR>&nbsp;&nbsp;&nbsp;&nbsp;} <BR>前台:唯一的就是设置ShowFooter="True" ! <BR>GridView数据导入Excel/Excel数据读入GridView <BR>  protected void Button1_Click(object sender, EventArgs e) <BR>&nbsp;&nbsp;&nbsp;&nbsp;{ <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Export("application/ms-excel", "学生成绩报表.xls"); <BR>&nbsp;&nbsp;&nbsp;&nbsp;} <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;private void Export(string FileType, string FileName) <BR>&nbsp;&nbsp;&nbsp;&nbsp;{ <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response.Charset = "GB2312"; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response.ContentEncoding = System.Text.Encoding.UTF7; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString()); <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response.ContentType = FileType; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.EnableViewState = false; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringWriter tw = new StringWriter(); <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HtmlTextWriter hw = new HtmlTextWriter(tw); <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GridView1.RenderControl(hw); <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response.Write(tw.ToString()); <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response.End(); <BR>&nbsp;&nbsp;&nbsp;&nbsp;} <BR>//如果没有下面方法会报错类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内 <BR>&nbsp;&nbsp;&nbsp;&nbsp;public override void VerifyRenderingInServerForm(Control control) <BR>&nbsp;&nbsp;&nbsp;&nbsp;{ <BR>&nbsp;&nbsp;&nbsp;&nbsp;} <BR>还有由于是文件操作所以要引入名称空间IO和Text <BR><A href="http://www.bdqn-sx.com">www.bdqn-sx.com</A></DIV>

评论 1

一代宗师 一代宗师  正式会员  发表于 2009-2-8 18:26:26 | 显示全部楼层
完全看不懂.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关注

粉丝

主题
精彩推荐
热门资讯
网友晒图
图文推荐

Powered by Pcgho! X3.4

© 2008-2022 Pcgho Inc.