声明式数据绑定教程-SqlDataSource 与 GridView 高级

作者:vkvi 来源:ITPOW(原创) 日期:2008-8-10

连接字符串

SqlDataSource 的连接字符串可以写在 web.config 中,关于此应用,请参见 ASP.NET 中读取数据库连接字符串

示例

web.config 中:

<connectionStrings>
  <add name="MySqlServer" connectionString="Data Source=(local);Initial Catalog=news;Persist Security Info=False;User ID=news;Password=news;" providerName="System.Data.SqlClient"/>
<connectionStrings>

页面中:

<asp:SqlDataSource ID="SqlDataSource1" runat="server"
    ConnectionString="<%$ ConnectionStrings:MySqlServer %>"
    SelectCommand="select * from cftea_docs">
</asp:SqlDataSource>

GridView 的分页

可以轻松为 GridView 设置分页,AllowPaging 获得或设置是否分页,PageSize 获得或设置页大小,PageIndex 获得或设置当前页索引,PagerSettings-Mode 获得或设置分页样式……

要说明的是,虽然只需要将 AllowPaing 设置为 true 就会自动分页,但 GridView 是把 SqlDataSource 提供给它的数据拿来进行分页的,也就是说要实现分页是从数据库中取出所有的数据,然后再交给 GridView 分页,如果数据量大的话,这将是一个非常影响性能的操作,要解决此问题,就需要按需来取,即需要哪页的数据,数据源控件就只从数据库中查询那页的数据并提交给 GridView,这就需要 ObjectDataSource,如果 GridView 与 ObjectDataSource 搭配进行分页,则分页不是由 GridView 来完成的,而是由 ObjectDataSource 来完成,GridView 只向 ObjectDataSource 提供一些分页的数据,ObjectDataSource 的应用将在后面中介绍到。

增加“编辑”、“删除”功能

第一步,为 GridView 增加“主键”,为 GridView 指定 DataKeyNames="id",我们这里只指定一个字段,如果要指定多个字段,则多个字段之间用“,”隔开。

第二步,为 GridView 增加“编辑”、“删除”按钮,只需要为 GridView 指定 AutoGenerateEditButton="true" AutoGenerateDeleteButton="true"。

第三步,为 SqlDataSource 指定相应的更新、删除方法。

UpdateCommand="update cftea_docs set title=@title, content=@content where id=@id"
DeleteCommand="delete from cftea_docs where id=@id"

“编辑”、“删除”就实现了,唯一的不足就是“删除”没有提示,这个我们也将在后面解决。

SqlDataSource 的参数

SQL 中的参数(以 @ 开头)都是与 GridView 字段对应,我们可不可以指定额外一些参数,使得这些参数即使不与 GridView 字段对应也可以使用呢?答案是可以。

我们可以利用编程的方式通过 SqlDataSource 的 SelectParameters、InsertParameters、UpdateParameters、DeleteParameters 等属性来设定。

我们也可以通过声明的方式来设定,以下示例设定了一个 SelectCommand 使用的参数,该参数自动从 QueryString 中取值。

    <SelectParameters>
        <asp:QueryStringParameter Name="categoryId" Type="Int32" QueryStringField="categoryId" />
    </SelectParameters>
相关文章