首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

再次散分,一个小小的趣题!进者有分!该如何处理

2012-01-06 
再次散分,一个小小的趣题!进者有分!一个SqlDataSource,它的selectinsertupdatedelete都设置好。再放一个gri

再次散分,一个小小的趣题!进者有分!
一个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属性。

热点排行