一个SqlDataSource,它的select insert update delete都设置好。
再放一个gridview
如果在设计状态把GridView通过智能标记设置数据源为:SqlDataSource1。在程序运行后,一切正常。可以进行以上四种操作。
但是,在设置状态不为GridView设置数据源,而在程序中设置:Page_Load中设置。
GridView1. DataSource = SqlDataSource1;
GridView1. DataBind();那么。将不能更新数据。请问是为什么?如果将绑定写在其它事件中,又如何每次刷新页面看到数据?
再放一个gridview
如果在设计状态把GridView通过智能标记设置数据源为:SqlDataSource1。在程序运行后,一切正常。可以进行以上四种操作。
但是,在设置状态不为GridView设置数据源,而在程序中设置:Page_Load中设置。
GridView1. DataSource = SqlDataSource1;
GridView1. DataBind();那么。将不能更新数据。请问是为什么?如果将绑定写在其它事件中,又如何每次刷新页面看到数据?
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
int index = e.RowIndex;
int LogID = (int)GridView1.DataKeys[index].Value;//取主键
用这个主键做操作
}
要想在后台绑定GridView的数据源,而且要更新,
要实现GridView的事件OnRowEditing,加了以后就不会报错了,但是没有编辑功能。
要想编辑,我估计要在GridView的OnRowDataBound事件里自己处理,
把TextBox啊什么的手动加上去,然后绑定数据。
能力有限,期待高手指点。
用edittemplate,然后当更新操作时,手动取得控件值,再用sqldatasource.updata更新。
只是这样比较笨。我想不通为什么通过程序绑定和设计状态绑定不一样。
___________________________________________________
我也刚学` 说错了莫怪
可以用c#更该 SqlDataSource 的select语句阿!
要绑定主键才可以this.GridView1.DataKeyNames = new string[] { "ID" };还是不行。你可以试试。不知道你说的:"要绑定主键才可以",是肯定句还是问句?
要绑定主键才可以this.GridView1.DataKeyNames = new string[] { "ID" };还是不行。你可以试试。不知道你说的:"要绑定主键才可以",是肯定句还是问句?
GridView1. DataSource = SqlDataSource1;
GridView1. DataBind();
放在IsPostBack中。你试一试吧,别的事件执行完之后,可以重新绑定GridView的。
GridView1. DataSource = SqlDataSource1;
绑定的是sqldatasource设计状态的值。比如我的sqldatasource1.selectcommand改变了。那么页面刷新的时候,它又绑定到了原来的sqldatasource.selectommand。。
我想不通为什么通过程序绑定和设计状态绑定不一样。 ---------------------------我也没想明白。
后台绑定非DataSource控件数据源的话要实现这两个方法
GridView1_RowEditing,GridView1_RowUpdating
可是现在绑定的是DataSource控件数据源,看起来感觉是应该一样的呀,
我觉得那里有点不对劲,应该比较简单才对的。
盼高手出马指点。
{
this.GridView1.DataSourceID = "AccessDataSource1";
}这里指定,但是不能用DataSource,因为这个时候还不能访问其他控件。
谢谢!果然。但还有一个问题。
我在程序运行时动态修改了Select Updata等。但Updata好像没有效果。因为init的时候又绑定回了最初的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属性。
以后在gridview中的事件并不能与qlDataSource联系到一起
2003中datagird进行更新操作时总是从新绑定,因为web状态是无序的,改了数据库要再绑一次才能显示
页面里的gridview和qlDataSource相互独立了,触发gridview的事件SqlDataSource不会响应
不知道怎样把他们联系到一起 ,updateing是事件在更新前触发是试试他吧
我在程序运行时动态修改了Select Updata等。但Updata好像没有效果。因为init的时候又绑定回了最初的sqldatasource1.你还有别的办法吗?------------------------
我这边测试过了,完全和在控件时候申明的一样呢,
如果你Update不能更新,看看是不是没有指定DataKeyNames?
我测试的时候是拖控件处理好所有的,然后在页面里面把GridView的DataSourceID这个属性给删掉,再在cs文件里指定的。
在05里有OnRowCancelingEdit,OnRowUpdating,诸如此类的东西的。。
你去看下这个的帮助吧,你的情况我尝试过我是不想自己写编辑的代码但又不想就用向导来完成绑定
最后还是老老实实的写代码吧