欢迎光临
我们一直在努力

在DataGrids和DropDownLists中使用ADO-.NET教程,Asp.Net开发

建站超值云服务器,限时71元/月

这是一篇关于使用可重用代码绑定ado数据到控件的文章。

介绍
ado是一种功能非常强大的从数据库中读取数据的技术,但是它也使人很容易搞糊涂,连接数据到datagrid或其他控件需要一些技巧和连接方法。我使用的方法是开发标准化的可重用代码访问数据库和显示数据。我已经写了很多通过sql语句在datagrid中显示结果的asp.net页面。

这篇文章将要描述我是怎样使用可重用代码连接ado数据,并在datagrid和其他控件中显示结果的。我也会讲述怎么为类似的任务开发你自己的代码。
背景
这篇文章假定你已经具有c#,sql,ado和.net控件的知识。

我在演示代码中使用的是northwind数据库,但是你可以使用任意的数据库。
使用代码web.config
我使用在 web.config 中的 <appsettings> 来保存程序中所要用到的字符串。如果你没这样做过,那么你应该试一试。我一般使用 web.config 保存数据库连接信息,因为这样可以使它更具有可移植性。

 <appsettings>

  <add key=”dsn_sql”

    value=”server=localhost;uid=myuser;password=pass;database=northwind;”/>

</appsettings>

datagrid.aspx.cs
下面使 datagrid.aspx 页面的完整代码。在这个程序中 bindgrid() 函数的作用使连接到数据库并在 datagrid 中显示结果数据。

using system;

using system.collections;

using system.componentmodel;

using system.data;

using system.drawing;

using system.web;

using system.web.sessionstate;

using system.web.ui;

using system.web.ui.webcontrols;

using system.web.ui.htmlcontrols;

using system.data.sqlclient;

using system.configuration;

 

namespace easy_ado_binds

{

  public class webform1 : system.web.ui.page

  {

    protected system.web.ui.webcontrols.datagrid datagrid1;

    // 从 web.config 获得连接字符串

    public string strconnectsql =

      (configurationsettings.appsettings[“dsn_sql”]);

 

    private void page_load(object sender, system.eventargs e)

    {

      // 构造sql字符串

      string sqlstring = “select * from employee”;

 

      // 调用并构造bindgrid

      bindgrid(strconnectsql, sqlstring, datagrid1 );

    }

 

    private void bindgrid(string dbconnectstring, string sqlcommand,

                           system.web.ui.webcontrols.datagrid dgrid)

// 从数据库中加载初始化页面

// 绑定到datagrid

    {

      // 创建数据连接

      sqlconnection conn = new sqlconnection(dbconnectstring);

 

      // 调用sql语句

      sqlcommand command = new sqlcommand(sqlcommand, conn);

 

      // 创建data adapter

      sqldataadapter adapter = new sqldataadapter(command);

 

      // 创建并填充dataset

      dataset ds = new dataset();

      adapter.fill(ds);

 

      // 填充并绑定到datagrid

      dgrid.datasource = ds;

      dgrid.databind();

      // 关闭连接

      conn.close();

    }

 

#region web form designer generated code

    override protected void oninit(eventargs e)

    {

      //

      // codegen: this call is required by the asp.net web form designer.

      //

      initializecomponent();

      base.oninit(e);

    }

 

    private void initializecomponent()

    {

      this.load += new system.eventhandler(this.page_load);

    }

#endregion

  }

}

从 web.config 获得sql字符串

允许你从 web.config 拿出你所需要的字符串,这是不是很灵活?我用这种方法指定数据库的连接,报告服务器,主页默认url字符串以及其他一些全局性的字符串。

using system.configuration;

// 从 web.config 获得连接字符串

public string strconnectsql = (configurationsettings.appsettings[“dsn_sql”]);

private void bindgrid()
这时工程最后做的事情。我把这些代码放到任意的页面中,我希望能从自己的数据库中取到数据并用 datagrid 显示出来。我不必写复杂的c#或ado代码。随便访问它,通过数据库、sql、 datagrid 参数,就为我获得了数据。
bindgrid() 如何工作
你传递给 bindgrid() 一个数据库连接,一个sql字符串和一个datagrid 标识符,然后它就连接到数据库,运行sql命令,在datagrid 中显示数据,最后退出函数。
bindgrid( db, sql, datagrid)

bindgrid( “告诉我是什么数据库”, “告诉我你想运行什么sql语句”, “告诉我你想在哪个datagrid中显示数据”)

bindgrid 输入
private void bindgrid(string dbconnectstring,

   string sqlcommand, system.web.ui.webcontrols.datagrid dgrid)

string dbconnectstring: database

string sqlcommand: sql

system.web.ui.webcontrols.datagrid dgrid: datagrid

注意:你在c#中可以为这个函数指定一个web控件作为输入。所有你必须做的事情是指定哪一个datagrid 是你想要使用这个函数的。

private void bindgrid(string dbconnectstring,

      string sqlcommand, system.web.ui.webcontrols.datagrid dgrid)

// 从数据库中加载初始化页面

  // 绑定到datagrid

{

  // 创建数据连接

  sqlconnection conn = new sqlconnection(dbconnectstring);

 

  // 调用sql语句

  sqlcommand command = new sqlcommand(sqlcommand, conn);

 

  // 创建data adapter

  sqldataadapter adapter = new sqldataadapter(command);

 

  // 创建并填充dataset

  dataset ds = new dataset();

  adapter.fill(ds);

 

  // 填充并绑定到datagrid

  dgrid.datasource = ds;

  dgrid.databind();

  // 关闭连接

  conn.close();

}

调用 bindgrid()

函数 bindgrid() 的详细说明:

数据库连接字符串:在 web.config 中指定

sql 字符串:任意sql字符串,甚至可以是存储过程

datagrid: datagrid 的标识符

private void page_load(object sender, system.eventargs e)

{

  // 构造sql字符串

  string sqlstring = “select * from employee”;

 

  // 调用并构造bindgrid

  bindgrid(strconnectsql, sqlstring, datagrid1 );

}

使用多个 datagrids

通过不同的sql命令,在页面上放置三个 datagrid 。如下面所示,只要调用具有不同sql命令的 bindgrid() 三次就可以了。所以现在你可以使用相同的代码使用多个 datagrid 。

// datagrid 1

string sqlstring1 = “select * from employee”;

bindgrid(strconnectsql, sqlstring1, datagrid1 );

 

// dategrid 2

string sqlstring2 = “select * from customers”;

bindgrid(strconnectsql, sqlstring2, datagrid2 );

 

//datagrid3

string sqlstring3 = “select * from orsders”;

bindgrid(strconnectsql, sqlstring3, datagrid3 );

使用 bindlist()
好了。现在我们将从使用 bindgrid() 转向使用 bindlist() ,它可以使用asp.net中的下拉列表。

代码稍微有点难理解了,因为 dropdownlist  多了两个属性:
datatextfield: 下拉列表中所显示的,也就是用户所看到的。

datavaluefield: 测定用户的选择的值。

这些值都被添加到 bindlist() 的输入参数中,所以可以像这样运行它:

bindlist(db, sql, text, value, dropdownlist);

using system;

using system.collections;

using system.componentmodel;

using system.data;

using system.drawing;

using system.web;

using system.web.sessionstate;

using system.web.ui;

using system.web.ui.webcontrols;

using system.web.ui.htmlcontrols;

using system.data.sqlclient;

using system.configuration;

 

namespace bindlist

{

  public class webform1 : system.web.ui.page

  {

    protected system.web.ui.webcontrols.dropdownlist dropdownlist1;

    // 从 web.config 获得连接字符串

    public string strconnectsql =

        (configurationsettings.appsettings[“dsn_sql”]);

 

    private void page_load(object sender, system.eventargs e)

    {

      // 创建sql字符串

      string sqlstring = “select employeeid, firstname + + lastname” +

                         ” as name from employees”;

      string textfield = “name”;

      string valuefield = “employeeid”;

 

      bindlist(strconnectsql, sqlstring, textfield ,

                              valuefield, dropdownlist1 );

    }

 

    private void bindlist(string strconnectsql, string sqlstring,

            string textfield, string valuefield,

            system.web.ui.webcontrols.dropdownlist dlist)

    {

      sqlconnection myconnection = new sqlconnection(strconnectsql);

      sqlcommand mycommand = new sqlcommand( sqlstring, myconnection );

      myconnection.open();

 

      dlist.datasource = mycommand.executereader();

      dlist.datatextfield = textfield;

      dlist.datavaluefield = valuefield;

      dlist.databind();

 

      myconnection.close();

    }

 

#region web form designer generated code

    override protected void oninit(eventargs e)

    {

      //

      // codegen: this call is required by the asp.net web form designer.

      //

      initializecomponent();

     base.oninit(e);

    }

 

/// <summary>

/// required method for designer support – do not modify

/// the contents of this method with the code editor.

/// </summary>

    private void initializecomponent()

    {

      this.load += new system.eventhandler(this.page_load);

    }

#endregion

  }

}

有趣的地方
这样做的好处之一就是你可以在asp.net中指定 web 控件作为函数的输入参数。这确实改变了我的编码习惯,我现在正在开发更多的一般性的可重用代码。
为什么使用这些代码
这非常简单。一旦你要为一个特定的控件编码,你就不必再重新写一次了。你可以一次又一次地使用相同的代码。
历史
2004年11月 v1.1

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 在DataGrids和DropDownLists中使用ADO-.NET教程,Asp.Net开发
分享到: 更多 (0)