ASP.NET 2.0:通过SqlDataSource绑定数据到普通控件

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都有具体的实现实例。

你可能感兴趣的:(dataSource)