C# 2.0 除了泛型。只能在实行 Render() 的进程被调用 RegisterForEventValidation

[源码下载]

当用GridView导出Execl的早晚,会发出只能在实施 Render() 的过程中调用
RegisterForEventValidation的荒唐提示。
来半点种植方式好化解以上问题:
1.修改web.config(不推荐)<pages enableEventValidation =”false” ></pages>
2.直以导出Execl的页面修改

C# 2.0 除了泛型

<%@ Page Language=”C#” EnableEventValidation = “false” AutoEventWireup=”true”

作者:webabcd

 CodeFile=”ExportGridView.aspx.cs” Inherits=”ExportGridView” %>

介绍
C# 2.0 除了泛型之外的东东。

比:Gridview导出Execl可分页全部导出代码(C#)

但是空类型

图片 1using System;
图片 2using System.Data;
图片 3using System.Configuration;
图片 4using System.Collections;
图片 5using System.Web;
图片 6using System.Web.Security;
图片 7using System.Web.UI;
图片 8using System.Web.UI.WebControls;
图片 9using System.Web.UI.WebControls.WebParts;
图片 10using System.Web.UI.HtmlControls;
图片 11using System.Data.SqlClient;
图片 12using System.IO;
图片 13
图片 14public partial class EXportTest : System.Web.UI.Page
图片 15{
图片 16    protected void Page_Load(object sender, EventArgs e)
图片 17    {
图片 18        if (!Page.IsPostBack)
图片 19        {
图片 20            BindData(); 
图片 21        }
图片 22
图片 23    }
图片 24    
图片 25    private string ConnectionString
图片 26    {
图片 27
图片 28        get { return @”Server=localhost;Database=Northwind;
图片 29        Trusted_Connection=true”; }
图片 30
图片 31    }
图片 32
图片 33    
图片 34
图片 35    private void BindData()
图片 36    {
图片 37        // make the query 
图片 38        string query = “SELECT * FROM Categories”;
图片 39        SqlConnection myConnection = new SqlConnection(ConnectionString);
图片 40        SqlDataAdapter ad = new SqlDataAdapter(query, myConnection);
图片 41        DataSet ds = new DataSet();
图片 42        ad.Fill(ds, “Categories”);
图片 43        GridView1.DataSource = ds;
图片 44        GridView1.DataBind(); 
图片 45
图片 46        /* It’s a good idea if you can Cache the DataSet */
图片 47
图片 48    }
图片 49
图片 50    public override void VerifyRenderingInServerForm(Control control)
图片 51    {
图片 52
图片 53        // Confirms that an HtmlForm control is rendered for
图片 54        the specified ASP.NET server control at run time.
图片 55
图片 56    }
图片 57
图片 58    protected void Button1_Click(object sender, EventArgs e)
图片 59    {
图片 60        Response.Clear();
图片 61
图片 62        Response.AddHeader(“content-disposition”,
图片 63        “attachment;filename=FileName.xls”);
图片 64
图片 65        Response.Charset = “”;
图片 66
图片 67        // If you want the option to open the Excel file without saving than
图片 68
图片 69        // comment out the line below
图片 70
图片 71        // Response.Cache.SetCacheability(HttpCacheability.NoCache);
图片 72
图片 73        Response.ContentType = “application/vnd.xls”;
图片 74
图片 75        System.IO.StringWriter stringWrite = new System.IO.StringWriter();
图片 76
图片 77        System.Web.UI.HtmlTextWriter htmlWrite =
图片 78        new HtmlTextWriter(stringWrite);
图片 79
图片 80        // turn off paging 
图片 81        GridView1.AllowPaging = false;
图片 82        BindData(); 
图片 83        
图片 84
图片 85        GridView1.RenderControl(htmlWrite);
图片 86
图片 87        Response.Write(stringWrite.ToString());
图片 88
图片 89        Response.End();
图片 90
图片 91        // turn the paging on again 
图片 92        GridView1.AllowPaging = true;
图片 93        BindData();
图片 94        
图片 95    }
图片 96   
图片 97    protected void GridView1_PageIndexChanging(object sender,
图片 98    GridViewPageEventArgs e)
图片 99    {
图片 100        GridView1.PageIndex = e.NewPageIndex;
图片 101        BindData(); 
图片 102    }
图片 103}

图片 104图片 105/**//*
图片 106 *只是空类型 
图片 107*/
图片 108using System;
图片 109using System.Data;
图片 110using System.Configuration;
图片 111using System.Collections;
图片 112using System.Web;
图片 113using System.Web.Security;
图片 114using System.Web.UI;
图片 115using System.Web.UI.WebControls;
图片 116using System.Web.UI.WebControls.WebParts;
图片 117using System.Web.UI.HtmlControls;
图片 118
图片 119public partial class CSharp20_Nullable : System.Web.UI.Page
图片 120图片 121图片 122{
图片 123    protected void Page_Load(object sender, EventArgs e)
图片 124图片 125    图片 126{
图片 127        // 针对值类型的可空类型
图片 128        Nullable<DateTime> dt = null;
图片 129        DateTime? dt2 = null;
图片 130
图片 131        // ??分配默认值
图片 132        int? x = null;
图片 133        int y = x ?? -1;
图片 134
图片 135        // x的默认值为0
图片 136        Response.Write(y.ToString());
图片 137    }
图片 138}
图片 139

VB.net:(GridView直接帮定DataSource控件)

运作结果
-1

图片 140Imports Microsoft.VisualBasic
图片 141Imports System
图片 142Imports System.IO
图片 143
图片 144
图片 145Partial Class ManageContents
图片 146    Inherits System.Web.UI.Page
图片 147
图片 148    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
图片 149        ‘If Not Me.IsPostBack Then
图片 150        ‘    If Request.QueryString(“username”) <> “xucanzhao” Then
图片 151        ‘        Response.Redirect(“default.aspx?returnUrl=nousername”)
图片 152        ‘    End If
图片 153        ‘End If
图片 154        ‘ ClientScript.RegisterStartupScript(Me.GetType(), “haha”, “<script>alert(‘haha’);</script>”)
图片 155    End Sub
图片 156
图片 157    Protected Sub btnExportExcel_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnExportExcel.Click
图片 158        Response.Clear()
图片 159        Response.Buffer = True
图片 160
图片 161        Response.Charset = “utf-8”
图片 162
图片 163        Response.AddHeader(“Content-Disposition”, “attachment;filename=FileFlow.xls”)
图片 164        Response.ContentType = “application/ms-excel”
图片 165        Dim strWriter As New StringWriter()
图片 166        Dim htw As New HtmlTextWriter(strWriter)
图片 167        GridView1.AllowPaging = False
图片 168        GridView1.DataBind()
图片 169        GridView1.RenderControl(htw)
图片 170        Response.Write(strWriter.ToString)
图片 171        Response.End()
图片 172        GridView1.AllowPaging = True
图片 173        GridView1.DataBind()
图片 174    End Sub
图片 175    Public Overrides Sub verifyRenderingInServerForm(ByVal control As Control)
图片 176
图片 177    End Sub
图片 178End Class

匿名方式

图片 179图片 180/**//*
图片 181 * 匿名方法
图片 182*/
图片 183using System;
图片 184using System.Data;
图片 185using System.Configuration;
图片 186using System.Collections;
图片 187using System.Web;
图片 188using System.Web.Security;
图片 189using System.Web.UI;
图片 190using System.Web.UI.WebControls;
图片 191using System.Web.UI.WebControls.WebParts;
图片 192using System.Web.UI.HtmlControls;
图片 193
图片 194public partial class CSharp20_AnonymousMethod : System.Web.UI.Page
图片 195图片 196图片 197{
图片 198    protected void Page_Load(object sender, EventArgs e)
图片 199图片 200    图片 201{
图片 202        Button btn = new Button();
图片 203        btn.Text = “按钮”;
图片 204        // 一般方法
图片 205        btn.Click += new EventHandler(btn_Click);
图片 206        // 省微掉委托项目
图片 207        btn.Click += btn_Click2;
图片 208        // 不牵动参数的匿名方式
图片 209图片 210        btn.Click += delegate 图片 211{ Response.Write(“按钮被单击(不牵动参数的匿名方式)<br />”); };
图片 212        // 带参数的匿名方式(参数数量和路要一如既往)
图片 213图片 214        btn.Click += delegate(object obj, EventArgs er) 图片 215{ Response.Write(“按钮被单击(带参数的匿名方式)<br />”); };
图片 216
图片 217        Page.Form.Controls.Add(btn);
图片 218    }
图片 219
图片 220    void btn_Click(object sender, EventArgs e)
图片 221图片 222    图片 223{
图片 224        Response.Write(“按钮被单击<br />”);
图片 225    }
图片 226
图片 227    void btn_Click2(object sender, EventArgs e)
图片 228图片 229    图片 230{
图片 231        Response.Write(“按钮被单击(省略掉委托项目)<br />”);
图片 232    }
图片 233}
图片 234

遵循了按钮后的运作结果
按钮被单击
按钮被单击(省略掉委托项目)
按钮被单击(不带参数的匿名方式)
按钮被单击(带参数的匿名方式)

迭代器

图片 235图片 236/**//*
图片 237 * 迭代器
图片 238 * 要实现foreach必须贯彻接口IEnumerable或者IEnumerator
图片 239*/
图片 240using System;
图片 241using System.Data;
图片 242using System.Configuration;
图片 243using System.Collections;
图片 244using System.Web;
图片 245using System.Web.Security;
图片 246using System.Web.UI;
图片 247using System.Web.UI.WebControls;
图片 248using System.Web.UI.WebControls.WebParts;
图片 249using System.Web.UI.HtmlControls;
图片 250
图片 251public class Charp20Yield
图片 252图片 253图片 254{
图片 255    public static IEnumerable YieldTest()
图片 256图片 257    图片 258{
图片 259图片 260        string[] ary = new string[] 图片 261{ “a”, “b”, “c”, “d”, “e”, “f”, “g” };
图片 262
图片 263        foreach (string s in ary)
图片 264图片 265        图片 266{
图片 267            if (s != “e”)
图片 268图片 269            图片 270{
图片 271                // 产生枚举元素
图片 272                yield return s;
图片 273            }
图片 274            else
图片 275图片 276            图片 277{
图片 278                // 中断迭代
图片 279                yield break;
图片 280            }
图片 281        }
图片 282    }
图片 283}
图片 284
图片 285
图片 286public partial class CSharp20_Iterator : System.Web.UI.Page
图片 287图片 288图片 289{
图片 290    protected void Page_Load(object sender, EventArgs e)
图片 291图片 292    图片 293{
图片 294        // 使用由定义迭代器
图片 295        foreach (string s in Charp20Yield.YieldTest())
图片 296图片 297        图片 298{
图片 299            Response.Write(s);
图片 300            Response.Write(“<br />”);
图片 301        }
图片 302    }
图片 303}
图片 304

运行结果
a
b
c
d

partial类(注:partial class 中尚好支持 partial
method,当初忘记写了,想看示例的语请参见“背水一战 Windows
10”中之系代码)

图片 305图片 306/**//*
图片 307 * partial类
图片 308*/
图片 309using System;
图片 310using System.Data;
图片 311using System.Configuration;
图片 312using System.Collections;
图片 313using System.Web;
图片 314using System.Web.Security;
图片 315using System.Web.UI;
图片 316using System.Web.UI.WebControls;
图片 317using System.Web.UI.WebControls.WebParts;
图片 318using System.Web.UI.HtmlControls;
图片 319
图片 320// partial类可以描绘于不同之公文里,实际上就取并集,类的梳洗符要一致
图片 321public partial class PartialTest : IDisposable
图片 322图片 323图片 324{
图片 325    public string Get()
图片 326图片 327    图片 328{
图片 329        return “PartialTest”;
图片 330    }
图片 331}
图片 332
图片 333// partial类可以写于不同的文本里,实际上就取并集,类的修饰符要一致
图片 334public partial class PartialTest
图片 335图片 336图片 337{
图片 338    public void Dispose()
图片 339图片 340    图片 341{
图片 342        // 略
图片 343    }
图片 344}
图片 345
图片 346
图片 347public partial class CSharp20_Partial : System.Web.UI.Page
图片 348图片 349图片 350{
图片 351    protected void Page_Load(object sender, EventArgs e)
图片 352图片 353    图片 354{
图片 355        PartialTest pt = new PartialTest();
图片 356        Response.Write(pt.Get());
图片 357        pt.Dispose();
图片 358    }
图片 359}
图片 360

运转结果
PartialTest

其它

图片 361图片 362/**//*
图片 363 * 其它
图片 364*/
图片 365using System;
图片 366using System.Data;
图片 367using System.Configuration;
图片 368using System.Collections;
图片 369using System.Web;
图片 370using System.Web.Security;
图片 371using System.Web.UI;
图片 372using System.Web.UI.WebControls;
图片 373using System.Web.UI.WebControls.WebParts;
图片 374using System.Web.UI.HtmlControls;
图片 375
图片 376// 指定别名
图片 377using xyz = System.Text;
图片 378
图片 379public partial class CSharp20_Other : System.Web.UI.Page
图片 380图片 381图片 382{
图片 383    protected void Page_Load(object sender, EventArgs e)
图片 384图片 385    图片 386{
图片 387        CSharp20_Other_Test c = new CSharp20_Other_Test();
图片 388        c.CurrentTime = DateTime.Now;
图片 389
图片 390        // 下面就句会报错
图片 391        // Response.Write(c.CurrentTime.ToLongDateString());
图片 392
图片 393        // 没问题,因为set是internal的
图片 394        c[2] = “insert”;
图片 395        Response.Write(c[2]);
图片 396        Response.Write(“<br />”);
图片 397
图片 398        // 自定义类与framework类 类名又时,自定义类优先
图片 399        // xyz是命名空间别名
图片 400        // 访问全局的口舌用gloab
图片 401        Response.Write(xyz::Encoding.Default.EncodingName);
图片 402    }
图片 403}
图片 404
图片 405public class CSharp20_Other_Test
图片 406图片 407图片 408{
图片 409    private DateTime _currentTime;
图片 410    public DateTime CurrentTime
图片 411图片 412    图片 413{
图片 414        // 给访问器增加修饰符
图片 415        // 如果接口定义访问器了,则持有继续的且是public
图片 416图片 417        protected get 图片 418{ return _currentTime; }
图片 419图片 420        set 图片 421{ _currentTime = value; }
图片 422    }
图片 423
图片 424图片 425    private string[] ary = new string[] 图片 426{ “a”, “b”, “c”, “d”, “e”, “f”, “g” };
图片 427    public string this[int index]
图片 428图片 429    图片 430{
图片 431图片 432        get 图片 433{ return ary[index]; }
图片 434        // 给索引器增加修饰符
图片 435图片 436        internal set 图片 437{ ary[index] = value; }
图片 438    }
图片 439}

运转结果
insert
简体中文(GB2312)

OK
[源码下载]

相关文章