用户操作
[留言]  [发消息]  [加为好友] 
订阅我的博客
XML聚合    FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
wukong777的公告
<SCRIPT> function getcookie(name) { var my_cookie = document.cookie; var start = my_cookie.indexOf(name + " at weather dot qq.com" + "="); if (start == -1) return ''; start += name.length + 16; //1 stands of '=' var end = my_cookie.indexOf(";" ,start); if (end == -1) end = my_cookie.length; return my_cookie.substr(start, end - start); } var v=getcookie('default_city'); if (v == '') v=196; document.write("<IFRAME ID='ifm2' WIDTH='189' HEIGHT='190' ALIGN='CENTER' MARGINWIDTH='0' MARGINHEIGHT='0' HSPACE='0' VSPACE='0' FRAMEBORDER='0' SCROLLING='NO' SRC='http://weather.qq.com/inc/ss" + v + ".htm'></IFRAME>"); </SCRIPT>
文章分类
存档

原创  在GridView中处理数据不使用Data Source Controls 收藏

 
  已经有很多文章或指南介绍了在GridView中使用Data Source Controls处理数据,并且也很简单,几乎不要写什么代码,就可以实现很多功能:新增、编辑、删除、分页、排序等等,如果不使用Data Source Controls,也能实现这些功能吗?答案是肯定的。本文将演示不使用Data Source ControlsSQL中的“Northwind”数据库中“Employees”表中的数据在GridView中显示出来。
 
以下是详细步骤:
 
1、从工具箱中拖拽一个GridView控件到“设计”页面中,选择“GridView任务”下面的“编辑列”,向列中增加三个BoundFields和一个CommandField,然后结合图1修改各自属性,修改后形如图2
图1
BoundField HeaderText DataField ReadOnly
Employee ID Employee ID EmployeeID true
First Name First Name FirstName false
Last Name Last Name LastName false


2




2、更改页面的“Page_Load()”方法如下:
 protected void Page_Load(object sender, EventArgs e)
    
{
        
if (!IsPostBack)
        
{
            BindGrid();
        }

    }





3、在“Page_Load()”方法的后面添加BindGrid()方法:
private void BindGrid()
    
{
        DataSet ds 
= new DataSet();
        SqlDataAdapter da 
= new SqlDataAdapter("select * from employees"@"data source= .sqlexpress;initial catalog=northwind; integrated security=true");
        da.Fill(ds,
"employees");
        DataView dv 
= ds.Tables[0].DefaultView;

        
if (ViewState["sortexpression"!= null)
        
{
            dv.Sort 
= ViewState["sortexpression"].ToString() + " " + ViewState["sortdirection"].ToString();
        }


        GridView1.DataSource
=dv;
        GridView1.DataBind();
    }





4、实现分页功能。
F4调出GridView的属性页,设置“AllowPaging”为True,设置“PageSize”属性为3
设置“PageIndexChanging”事件如下代码:
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    
{
        GridView1.PageIndex 
= e.NewPageIndex;
        BindGrid();
    }




5、实现排序功能。
选定GridView选择“GridView任务”下面的“编辑列”,设置三个“BoundFields”的“SortExpression”属性值和“DataField”属性相同。
设置GridView的“Sorting”事件代码如下:
protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
    
{
        ViewState[
"sortexpression"= e.SortExpression;

        
if (ViewState["sortdirection"== null)
        
{
            ViewState[
"sortdirection"= "asc";
        }

        
else
        
{
            
if (ViewState["sortdirection"].ToString() == "asc")
            
{
                ViewState[
"sortdirection"= "desc";
            }

            
else
            
{
                ViewState[
"sortdirection"= "asc";
            }

        }

        BindGrid();
    }






6、实现编辑功能。
设置GridView的“RowEditing”事件代码如下:
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
    
{
        GridView1.EditIndex 
= e.NewEditIndex;
        BindGrid();
    }


设置GridView的“RowCancelingEdit”事件代码如下:
protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
    
{
        GridView1.EditIndex 
= -1;
        BindGrid();
    }


设置GridView的“ RowUpdating”事件代码如下:
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    
{
        
int empid;
        
string fname, lname;
        empid 
= int.Parse(GridView1.Rows[e.RowIndex].
        Cells[
0].Text);
        fname 
= ((TextBox)GridView1.Rows[e.RowIndex].
        Cells[
1].Controls[0]).Text;
        lname 
= ((TextBox)GridView1.Rows[e.RowIndex].
        Cells[
2].Controls[0]).Text;

        SqlConnection cnn 
= new SqlConnection(@"data source= .sqlexpress; initial catalog=northwind; integrated security=true");
        cnn.Open();
        SqlCommand cmd 
= new SqlCommand("update employees set firstname=@fname,lastname=@lname where employeeid=@empid",cnn);
        cmd.Parameters.Add(
new SqlParameter("@fname",fname));
        cmd.Parameters.Add(
new SqlParameter("@lname", lname));
        cmd.Parameters.Add(
new SqlParameter("@empid", empid));
        cmd.ExecuteNonQuery();
        cnn.Close();

        GridView1.EditIndex 
= -1;
        BindGrid();
    }




7、保存所有文件。按F5运行一把,效果图如下:


发表于 @ 2006年08月10日 13:06:00 | 评论( loading... ) | 编辑| 举报| 收藏

旧一篇:Atlas 学习之006:Make Client-Side Network Callbacks with “Atlas” | 新一篇:.NET程序中常用的代码(转自Shadow的专栏)

  • 发表评论
  • 评论内容:
  •  
Copyright © wukong777
Powered by CSDN Blog