ASP.NET 2.0:通过SqlDataSource绑定数据到普通控件
2005-01-01 00:00
706 查看
ASP.NET 2.0中一些新的Data控件,如GridView,DetailsView,FormView,当它们与SqlDataSource绑定后,可以直接实现添加、修改、删除操作,并不需要编码。也就是说这些控件内置地会调用SqlDataSource对应的方法实现对应的操作。但某些条件下并不适合使用这些控件,而需要用普通的控件。比如有时会用DataList,或者Reapter,有时只能用几个TextBox来实现数据的输入维护,比如要插入一条记录到一个数据库表中,但是在界面展现上这条数据的所有字段并不是聚集在一起的,比如一个页面的头部有几个字段,尾部有几个字段,中间有些其他的控件,对应的是其他的数据。这种情况下就很难用DetailsView控件或者FormView控件,而只能我们自己来摆控件了。这样的话,我们当然可以不使用SqlDataSource控件,而按照常规的方法,比如一个方法返回一个对象,在把每个textbox绑定到这个对象。使用SqlDataSource的好处就是可以减少代码量,而且ASP.NET 2.0中都是通过DataSouce控件来进行数据操作的,所以还是尽量用的好。用SqlDataSource绑定普通控件,虽然还是需要一定的代码量,但相对还是少很多了。
下面的几个代码片断可以放映如何使用sqldatasource绑定普通数据控件:
1. 绑定textbox,展现
DataSourceSelectArguments ar = new DataSourceSelectArguments();
DataView dv = (DataView)SqlDataSource1.Select(ar);
this.txtClosingParagraph.Text = dv.Table.Rows[0]["ClosingParagraph"].ToString();
this.txtOpeningParagraph.Text = dv.Table.Rows[0]["OpeningParagraph"].ToString();
this.txtCreatedDate.Text = dv.Table.Rows[0]["CreatedDate"] == DBNull.Value ? string.Empty : ((DateTime)dv.Table.Rows[0]["CreatedDate"]).ToShortDateString();
this.txtCreatedBy.Text = dv.Table.Rows[0]["CreatedBy"].ToString();
this.txtDisclaimer.Text = dv.Table.Rows[0]["Disclaimer"].ToString();
this.txtOpeningParagraph.Text = dv.Table.Rows[0]["OpeningParagraph"].ToString();
this.txtQuoteAttn.Text = dv.Table.Rows[0]["QuoteAttn"].ToString();
this.txtQuoteNo.Text = isNew ? DateTime.Now.Ticks.ToString() : dv.Table.Rows[0]["QuoteNo"].ToString();
this.txtQuoteOwner.Text = dv.Table.Rows[0]["QuoteOwner"].ToString();
this.txtQuoteTo.Text = dv.Table.Rows[0]["QuoteTo"].ToString();
this.txtSubject.Text = dv.Table.Rows[0]["Subject"].ToString();
this.txtTemplateID.Text = dv.Table.Rows[0]["TemplateID"].ToString();
2. 绑定到DataList,插入
SqlDataSource data = (SqlDataSource)grid.Parent.FindControl("SqlDataSource3");
data.InsertParameters["QuoteItemSurchargeID"].DefaultValue = Guid.NewGuid().ToString();
data.InsertParameters["QuoteItemID"].DefaultValue = data.SelectParameters[0].DefaultValue;
data.InsertParameters["TariffName"].DefaultValue = ((TextBox)grid.FooterRow.FindControl("txtTariffName")).Text.Trim();
data.InsertParameters["Rate20"].DefaultValue = ((TextBox)grid.FooterRow.FindControl("txtRate20")).Text.Trim();
data.InsertParameters["Rate40"].DefaultValue = ((TextBox)grid.FooterRow.FindControl("txtRate40")).Text.Trim();
data.InsertParameters["Rate40HC"].DefaultValue = ((TextBox)grid.FooterRow.FindControl("txtRate40HC")).Text.Trim();
data.InsertParameters["Rate45"].DefaultValue = ((TextBox)grid.FooterRow.FindControl("txtRate45")).Text.Trim();
data.InsertParameters["CreatedDate"].DefaultValue = DateTime.Now.ToString();
data.Insert();
this.DataList1.DataBind();
3. 绑定到DataList,更新
SqlDataSource2.UpdateParameters["Origin"].DefaultValue = ((TextBox)e.Item.FindControl("txtOrigin")).Text.Trim();
SqlDataSource2.UpdateParameters["Destination"].DefaultValue = ((TextBox)e.Item.FindControl("txtDestination")).Text.Trim();
SqlDataSource2.UpdateParameters["Rate20"].DefaultValue = ((TextBox)e.Item.FindControl("txtRate20")).Text.Trim();
SqlDataSource2.UpdateParameters["Rate40"].DefaultValue = ((TextBox)e.Item.FindControl("txtRate40")).Text.Trim();
SqlDataSource2.UpdateParameters["Rate40HC"].DefaultValue = ((TextBox)e.Item.FindControl("txtRate40HC")).Text.Trim();
SqlDataSource2.UpdateParameters["Rate45"].DefaultValue = ((TextBox)e.Item.FindControl("txtRate45")).Text.Trim();
SqlDataSource2.UpdateParameters["ETDDate"].DefaultValue = ((TextBox)e.Item.FindControl("txtETDDate")).Text.Trim();
SqlDataSource2.UpdateParameters["Carrier"].DefaultValue = ((TextBox)e.Item.FindControl("txtCarrier")).Text.Trim();
SqlDataSource2.UpdateParameters["TT"].DefaultValue = ((TextBox)e.Item.FindControl("txtTT")).Text.Trim();
SqlDataSource2.UpdateParameters["QuoteItemID"].DefaultValue = (DataList1.DataKeys[e.Item.ItemIndex]).ToString();
SqlDataSource2.Update();
DataList1.EditItemIndex = -1;
DataList1.DataBind();
实际上主要的还是手动调用SqlDataSource的Select() Inert() Update()方法。关于其他的细节请查看msdn SqlDataSource对应的方法,msdn都有具体的实现实例。
下面的几个代码片断可以放映如何使用sqldatasource绑定普通数据控件:
1. 绑定textbox,展现
DataSourceSelectArguments ar = new DataSourceSelectArguments();
DataView dv = (DataView)SqlDataSource1.Select(ar);
this.txtClosingParagraph.Text = dv.Table.Rows[0]["ClosingParagraph"].ToString();
this.txtOpeningParagraph.Text = dv.Table.Rows[0]["OpeningParagraph"].ToString();
this.txtCreatedDate.Text = dv.Table.Rows[0]["CreatedDate"] == DBNull.Value ? string.Empty : ((DateTime)dv.Table.Rows[0]["CreatedDate"]).ToShortDateString();
this.txtCreatedBy.Text = dv.Table.Rows[0]["CreatedBy"].ToString();
this.txtDisclaimer.Text = dv.Table.Rows[0]["Disclaimer"].ToString();
this.txtOpeningParagraph.Text = dv.Table.Rows[0]["OpeningParagraph"].ToString();
this.txtQuoteAttn.Text = dv.Table.Rows[0]["QuoteAttn"].ToString();
this.txtQuoteNo.Text = isNew ? DateTime.Now.Ticks.ToString() : dv.Table.Rows[0]["QuoteNo"].ToString();
this.txtQuoteOwner.Text = dv.Table.Rows[0]["QuoteOwner"].ToString();
this.txtQuoteTo.Text = dv.Table.Rows[0]["QuoteTo"].ToString();
this.txtSubject.Text = dv.Table.Rows[0]["Subject"].ToString();
this.txtTemplateID.Text = dv.Table.Rows[0]["TemplateID"].ToString();
2. 绑定到DataList,插入
SqlDataSource data = (SqlDataSource)grid.Parent.FindControl("SqlDataSource3");
data.InsertParameters["QuoteItemSurchargeID"].DefaultValue = Guid.NewGuid().ToString();
data.InsertParameters["QuoteItemID"].DefaultValue = data.SelectParameters[0].DefaultValue;
data.InsertParameters["TariffName"].DefaultValue = ((TextBox)grid.FooterRow.FindControl("txtTariffName")).Text.Trim();
data.InsertParameters["Rate20"].DefaultValue = ((TextBox)grid.FooterRow.FindControl("txtRate20")).Text.Trim();
data.InsertParameters["Rate40"].DefaultValue = ((TextBox)grid.FooterRow.FindControl("txtRate40")).Text.Trim();
data.InsertParameters["Rate40HC"].DefaultValue = ((TextBox)grid.FooterRow.FindControl("txtRate40HC")).Text.Trim();
data.InsertParameters["Rate45"].DefaultValue = ((TextBox)grid.FooterRow.FindControl("txtRate45")).Text.Trim();
data.InsertParameters["CreatedDate"].DefaultValue = DateTime.Now.ToString();
data.Insert();
this.DataList1.DataBind();
3. 绑定到DataList,更新
SqlDataSource2.UpdateParameters["Origin"].DefaultValue = ((TextBox)e.Item.FindControl("txtOrigin")).Text.Trim();
SqlDataSource2.UpdateParameters["Destination"].DefaultValue = ((TextBox)e.Item.FindControl("txtDestination")).Text.Trim();
SqlDataSource2.UpdateParameters["Rate20"].DefaultValue = ((TextBox)e.Item.FindControl("txtRate20")).Text.Trim();
SqlDataSource2.UpdateParameters["Rate40"].DefaultValue = ((TextBox)e.Item.FindControl("txtRate40")).Text.Trim();
SqlDataSource2.UpdateParameters["Rate40HC"].DefaultValue = ((TextBox)e.Item.FindControl("txtRate40HC")).Text.Trim();
SqlDataSource2.UpdateParameters["Rate45"].DefaultValue = ((TextBox)e.Item.FindControl("txtRate45")).Text.Trim();
SqlDataSource2.UpdateParameters["ETDDate"].DefaultValue = ((TextBox)e.Item.FindControl("txtETDDate")).Text.Trim();
SqlDataSource2.UpdateParameters["Carrier"].DefaultValue = ((TextBox)e.Item.FindControl("txtCarrier")).Text.Trim();
SqlDataSource2.UpdateParameters["TT"].DefaultValue = ((TextBox)e.Item.FindControl("txtTT")).Text.Trim();
SqlDataSource2.UpdateParameters["QuoteItemID"].DefaultValue = (DataList1.DataKeys[e.Item.ItemIndex]).ToString();
SqlDataSource2.Update();
DataList1.EditItemIndex = -1;
DataList1.DataBind();
实际上主要的还是手动调用SqlDataSource的Select() Inert() Update()方法。关于其他的细节请查看msdn SqlDataSource对应的方法,msdn都有具体的实现实例。
相关文章推荐
- ASP.NET 2.0:通过SqlDataSource绑定数据到普通控件
- 在ASP.NET 2.0中操作数据之四十七:用SqlDataSource控件插入、更新、删除数据
- 在ASP.NET 2.0中操作数据之四十八:对SqlDataSource控件使用开放式并发
- 在ASP.NET 2.0中操作数据之四十六:使用SqlDataSource控件检索数据
- 在ASP.NET 2.0中操作数据之四十六:使用SqlDataSource控件检索数据
- 在ASP.NET 2.0中操作数据之四十八:对SqlDataSource控件使用开放式并发
- 在ASP.NET 2.0中操作数据之四十七:用SqlDataSource控件插入、更新、删除数据
- [翻译]Scott Mitchell 的ASP.NET 2.0数据教程之四十七:使用SqlDataSource控件查询数据
- Scott Mitchell 的ASP.NET 2.0数据教程之48 使用SqlDataSource控件查询数据
- Scott Mitchell 的ASP.NET 2.0数据教程之四十八 使用SqlDataSource控件查询数据
- Scott Mitchell 的ASP.NET 2.0数据教程之50:对SqlDataSource控件使用开放式并发
- Scott Mitchell 的ASP.NET 2.0数据教程之49:用SqlDataSource控件插入、更新、删除数据
- ASP.NET 2.0 和数据绑定控件:新的角度,新的做法
- asp.net 2.0教程 数据绑定控件
- 摘要:了解 ASP.NET 2.0 中的用于生成自定义数据绑定控件的工具是如何演变的
- ASP.NET 2.0 - 数据绑定控件 功能一览表
- ASP.NET 2.0的几种数据源和数据绑定控件
- ASP.NET 2.0 的数据绑定控件概述与区别(GridView、DetailsView、FormView 、Repeater、DataList)
- ASP.NET 2.0 的数据绑定控件概述与区别(GridView、DetailsView、FormView 、Repeater、DataList)
- ASP.NET 2.0 - 数据绑定控件数据异动功能一览表