Datagrid 控件学习笔记

A basic example for the dataGrid  to show the info from DB:

 

 

 

<%@ Import NameSpace="System.Data"%>

<%@ Import NameSpace="System.Data.SqlClient"%>

<!DOCTYPE HTML PUBLIC "-//W 3C//DTD HTML 4.0 Transitional//EN" >

<HTML>

        <HEAD>

                <title>WebForm1</title>

                <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">

                <meta name="CODE_LANGUAGE" Content="C#">

                <meta name="vs_defaultClientScript" content="JavaScript">

                <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">

        </HEAD>

        <body MS_POSITIONING="GridLayout">

                <form id="Form1" method="post" runat="server">

                        <asp:DataGrid id="MyDataGrid" style="Z-INDEX: 101; LEFT: 32px; POSITION: absolute; TOP: 32px"

                                runat="server" Width="168px" Height="120px"></asp:DataGrid>

                </form>

                <script language="C#" runat="server">

void Page_Load(Object sender, EventArgs e)

{

if(!IsPostBack){

        //step 1:create connection

        string strconn= ConfigurationSettings.AppSettings["dsn"];

        SqlConnection conn=new SqlConnection(strconn);

        string queryGoods=" select * from goods ";

        try{

        //step 2:open the connection

        conn.Open();

 

 

 

        //step 3:create sql command

        SqlCommand comd=new SqlCommand(queryGoods,conn);

       

        //step 4:deal with the result

        SqlDataReader reader=comd.ExecuteReader();

        //bind the result to the datagrid

        MyDataGrid.DataSource=reader;

        MyDataGrid.DataBind();

       

        }

        catch (SqlException se1){

        Console.WriteLine(se1.Message);

        }

        finally{

        //step 5:close the connection

        conn.Close();}

 

 

 

 

 

 

               }

}

                </script>

        </body>

</HTML>

 

 

 

pay attention to :

 

 

 

web.config 里的配置 add  blow:

 

 

 

  <appSettings>

<add key="dsn" value="persist security info=False;Integrated Security=SSPI;server=localhost;Trusted_Connection=true;DATABASE=WMS"/>

  </appSettings> 

如何使用6个内置ASP对象?

答:ASP提供了多个内嵌对象,无须建立就可以在指令中直接访问和使用它们,这六个对象主要有:请求(Request)对象、响应(Response)对象、工作阶段(Session)对象、应用程序(Application)对象、服务器(Server)对象、Cookies对象,这六个对象中的服务器(Server)对象可加载其他组件,这可以扩展ASP的功能。

使用Server.CreateObject所建立的对象,它的生命周期在它建立时开始,在它所在的网页程序结束时结束。如果想要让该对象跨网页使用,则可以用Session对象来记录Server.CreateObject所建立的对象。

 

 

 

一些关于dataGrid 很好的文章:

 

 

 

DataGrid Web控件深度历险(3) part1:  http://dev.csdn.net/article/26/26249.shtm

这个是翻译过来的文章,思路很清晰

 

 

 

 

 

 

ado.net 数据库的两种方式:

方式一: System.Data.SqlClient(主要依靠)

方式二System.Data(主要依靠)

Step 1

//step 1:create connection

string strconn= ConfigurationSettings.AppSettings["dsn"];

SqlConnection conn=new SqlConnection(strconn);

 

 

 

 

 

 

web.config 里的配置 add  blow:

 

 

 

  <appSettings>

<add key="dsn" value="persist security info=False;Integrated Security=SSPI;server=localhost;Trusted_Connection=true;DATABASE=WMS"/>

  </appSettings> 

 

 

 

 

 

 

//step 1: conn SqlDataAdapter adapter=new SqlDataAdapter(" select * from goods ", "persist security info=False;Integrated Security=SSPI;server=localhost;Trusted_Connection=true;DATABASE=WMS" );

Step2:

 

 

 

try{ //step 2:open the connection

 

 

 

conn.Open();

//step 2:

DataSet ds=new DataSet();

//step 3:create sql command

SqlCommand comd=new SqlCommand(queryGoods,conn);

//step 3: adapter.Fill(ds);

//step 4:deal with the result

 SqlDataReader reader=comd.ExecuteReader();

ds.Tables[0]

//step 5:close the connection conn.Close();

 

 

 

这个模式基本和JDBC一样.只不过语句里的单词不一样

 

 

 

这种模式没有打开和关闭,而且不需要catch异常?DataSet 是内存中的数据库,可以容纳多个表,甚至是约束和关系.DataSet DataAdapter 配合使用

 

 

 

显示查询出来的部分属性:

首先在 properties 设置behavior 中的 Auto Generate cloumns 设置为flase.即禁止自动产生查询出来的资料.然后修改html显示部分的代码:

 

 

 

<Columns>

<asp:BoundColumn DataField="GName" HeaderText="Goods Name"></asp:BoundColumn>

<asp:BoundColumn DataField="GPrice" HeaderText="Goods Price"></asp:BoundColumn>

<asp:BoundColumn DataField="GProvider1" HeaderText="Primary Goods Provider"></asp:BoundColumn>

<asp:ButtonColumn Text="Delete" HeaderText="Primary Goods Provider"></asp:ButtonColumn>

</Columns>

 

 

 

这些是添加的,其它部分不变.  其中BoundColumn 控件是绑定查询出来的属性,ButtonColumn控件是添加额外我们定义的删除等….但是没有图形化的拖拽,必须自己写代码来实现?

 

 

 

默认查询出来的东西是以数据中记录的形式排序的,如果想以我们自己的方式进行排序,那么,需要使用

System.Data.DataView

下边的代码也要修改成:

DataView view=new DataView(ds.Tables[0]);

 view.Sort="GPrice ASC";

 MyDataGrid .DataSource=view;

MyDataGrid.DataBind();

我们前面所学的 MyDataGrid ds=dataReader;

 

 

 

如果单击某行,排序的话,需要添加一个OnSortCommand=”method”  属性.然后编写method方法

还要讲AllowSorting 属性设置为true.也在behavior.

 

 

 

dataGrid 的分页

 

 

 

我们需要做的是:

1.       asp:DataGrid里设置:

AllowPaging="True" PageSize="2" OnPageIndexChanged="OnNewPage"

分别代表的含义是: 允许分页,  分页的记录条数, 分页的时候所用的方法

接着编写分页的OnNewPage 的方法:

 

 

 

void OnNewPage(Object sender, DataGridPageChangedEventArgs e)

{

MyDataGrid.CurrentPageIndex=e.NewPageIndex;

 

 

 

SqlDataAdapter adapter=new SqlDataAdapter(" select * from goods ", "persist security info=False;Integrated Security=SSPI;server=localhost;Trusted_Connection=true;DATABASE=WMS" );

        //step 2:

        DataSet ds=new DataSet();

        //step 3:

        adapter.Fill(ds);

        DataView view=new DataView(ds.Tables[0]);

        view.Sort="GPrice ASC";

    MyDataGrid .DataSource=view;

    MyDataGrid.DataBind();

}

 

 

 

MyDataGrid.CurrentPageIndex=e.NewPageIndex;

当前的页数以新的一页开始.这个是必须的,其它的与我们没分页的一样,copy 上去就可以了

这样是可以实现分页了,但是上一页,下一页都是< >不舒服,怎么办

1.PagerStyle-PrevPageText="上一頁" PagerStyle-NextPageText="下一頁" 2.PagerStyle-Mode="NumericPages"

1.表示用汉字替代<>

2.表示显示每一页,原先我看到很多网站是显示的123456789…等页,如果用我笨笨的JSP 方法去分页岂不是累死人了?!

 

 

 

System.Object
   System.MarshalByRefObject
      System.ComponentModel.Component
         System.Web.UI.WebControls.Style
            System.Web.UI.WebControls.TableItemStyle
               System.Web.UI.WebControls.DataGridPagerStyle

 

 

 

关于分页性能提升的属性: AllowCustomPaging

在分页的时候,只获取当前页面的分页记录

 

 

 

DataGrid 控件是相当重要的,也是webControls 里最复杂的控件,现在已经掌握了最基本的用法,以后用到要进一步深层次研究.比如需要效率高的分页的时候,需要点击某row 按顺序排列的时候
web controls 控件最复杂的也就是不过如此,看了.net 不难,而且非常好用,开发效率也比较高

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值