再次散分,一个小小的趣题!进者有分!
一个SqlDataSource,它的select insert update delete都设置好。
再放一个gridview
如果在设计状态把GridView通过智能标记设置数据源为:SqlDataSource1。在程序运行后,一切正常。可以进行以上四种操作。
但是,在设置状态不为GridView设置数据源,而在程序中设置:Page_Load中设置。
GridView1. DataSource = SqlDataSource1;
GridView1. DataBind();
那么。将不能更新数据。
请问是为什么?如果将绑定写在其它事件中,又如何每次刷新页面看到数据?
------解决方案--------------------我已经找到答案了:
protected void Page_Init(object sender, EventArgs e)
{
this.GridView1.DataSourceID = "AccessDataSource1 ";
}
这里指定,但是不能用DataSource,因为这个时候还不能访问其他控件。
------解决方案--------------------GridView1. DataSource = SqlDataSource1;
GridView1. DataBind();
这种写法根本就不是把GridView1绑定到SqlDataSource1,而仅仅是将SqlDataSource1进行了SELECT之后获得的数据绑定了,UPDATE/INSERT/DELETE方法根本没绑定。
正确的等效写法:
GridView1.DataSourceID = "SqlDataSource1 ";
// 不需要执行DataBind();
用ASP.NET 2.0,最好就用2.0的使用方式,不要再去用1.0手动提供DataSource再手动DataBind那套了。如果需要动态制订DataSource控件,就通过DataSourceID属性。