GridView基本的编辑,更新,删除操作

原创 2007年09月14日 14:30:00

这个星期比较忙,公司有几个站点相继要上线,忙着上线前BUG的修改。我在空闲时间里做了GridView的数据库基本操作的练习,因为在公司里用的是VB.NET,而我平时比较喜欢C#,在学校里学的也是C#, 所以做这个也是顺便练一下手,免得时间长了C#都忘记了。下面是页面的source

 

    <div>
        
<asp:GridView ID="GridView1" runat="server" BackColor="White" BorderColor="#336666"
            BorderStyle
="Double" BorderWidth="3px" CellPadding="4" GridLines="Horizontal" AllowPaging="True" AutoGenerateColumns="False" 
            OnPageIndexChanged
="GridView1_PageIndexChanged" OnPageIndexChanging="GridView1_PageIndexChanging" OnRowCancelingEdit="GridView1_RowCancelingEdit" 
            OnRowEditing
="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating" OnSelectedIndexChanged="GridView1_SelectedIndexChanged" 
            OnSelectedIndexChanging
="GridView1_SelectedIndexChanging" OnRowDeleting="GridView1_RowDeleting" AllowSorting="true" OnRowDataBound="GridView1_RowDataBound">
            
<FooterStyle BackColor="White" ForeColor="#333333" />
            
<RowStyle BackColor="White" ForeColor="#333333" />
            
<SelectedRowStyle BackColor="#339966" Font-Bold="True" ForeColor="White" />
            
<PagerStyle BackColor="#336666" ForeColor="White" HorizontalAlign="Center" />
            
<HeaderStyle BackColor="#336666" Font-Bold="True" ForeColor="White" />
            
<Columns>
                
<asp:CommandField ButtonType="Button" ShowSelectButton="True" />
                
<asp:CommandField ButtonType="Button" ShowEditButton="True" />
                
<asp:CommandField ButtonType="Button" ShowDeleteButton="True" />
                
<asp:BoundField DataField="customerid" HeaderText="ID" NullDisplayText="No Record" />
                
<asp:BoundField DataField="CompanyName" HeaderText="CompanyName" NullDisplayText="No Record" />
                
<asp:BoundField DataField="ContactName" HeaderText="ContactName" NullDisplayText="No Record" />
                
<asp:BoundField DataField="Address" HeaderText="Address" NullDisplayText="No Record" />
            
</Columns>
        
</asp:GridView>
    
    
</div>

后台的代码:

 

    string ConStr = ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString;
    
protected void Page_Load(object sender, EventArgs e)
    
...{
        
if (!IsPostBack)
        
...{
            GridView1.AllowSorting 
= true;
            BindData();
            SetGrid();
            
//ViewState["style"] = "0";
        }

    }



    
private void BindData()
    
...{
        
        SqlConnection MyCon 
= new SqlConnection(ConStr);
        
string QueryStr = "SELECT customerid,CompanyName,ContactName,Address FROM customers";
        SqlDataAdapter Da 
= new SqlDataAdapter(QueryStr,MyCon);
        DataSet Ds 
= new DataSet();
        Da.Fill(Ds,
"Customers");
        GridView1.DataSource 
= Ds.Tables[0];
        GridView1.DataKeyNames 
= new string []...{"customerid"};
        GridView1.DataBind();
        
    }



    
private void SetGrid()
    
...{
        GridView1.AllowPaging 
= true;
        
//GridView1.PageSize = 15;
    }



    
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    
...{
        GridView1.PageIndex 
= e.NewPageIndex;
        BindData();
    }



    
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
    
...{
        GridView1.EditIndex 
= e.NewEditIndex;
        GridView1.EditRowStyle.BackColor 
= Color.Black;
        BindData();
    }



    
protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
    
...{
        GridView1.EditIndex 
= -1;
        BindData();
    }



    
protected void GridView1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
    
...{
        GridViewRow Row 
= GridView1.Rows[e.NewSelectedIndex];
        Response.Write(
"<script>alert('你选择了ID为" + Row.Cells[3].Text + "的行');</script>");
    }



    
protected void GridView1_PageIndexChanged(object sender, EventArgs e)
    
...{
        Response.Write(
"<script>alert('你切换到了第" + (GridView1.PageIndex+1+ "页');</script>");
    }



    
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
    
...{
        GridViewRow Row 
= GridView1.SelectedRow;
        Row.BackColor 
= Color.Crimson;
    }



    
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    
...{
        
string ID = GridView1.DataKeys[e.RowIndex].Value.ToString();
        
//防止非法的输入,预防脚本攻击
        string CustomerId = Server.HtmlDecode(((TextBox)GridView1.Rows[e.RowIndex].Cells[3].Controls[0]).Text.ToString());
        
string CompanyName = Server.HtmlDecode(((TextBox)GridView1.Rows[e.RowIndex].Cells[4].Controls[0]).Text.ToString());
        
string ContactName = Server.HtmlDecode(((TextBox)GridView1.Rows[e.RowIndex].Cells[5].Controls[0]).Text.ToString());
        
string Address = Server.HtmlDecode(((TextBox)GridView1.Rows[e.RowIndex].Cells[6].Controls[0]).Text.ToString());
        SqlConnection Con 
= new SqlConnection(ConStr);
        
try
        
...{
            
string UpdateStr = "UPDATE customers SET companyname='" + CompanyName + "',contactname='" + ContactName + "',address='" + Address + "' WHERE customerid='" + ID + "'";
            SqlCommand Cmd 
= new SqlCommand(UpdateStr, Con);
            
//尽可能晚的打开连接,尽早的关闭连接
            Con.Open();
            Cmd.ExecuteNonQuery();
            GridView1.EditIndex 
= -1;
            BindData();
        }

        
catch (Exception ex)
        
...{
            Response.Write(
"<script>alert('编辑出错,请重新填写');</script>");
            GridView1.EditIndex 
= -1;
            BindData();
        }

        
//要及时的关闭打开的连接,提高程序的性能
        finally
        
...{
            Con.Dispose();
        }

    }



    
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
    
...{
        
string ID = GridView1.DataKeys[e.RowIndex].Value.ToString();
        
string QueryStr = "DELETE FROM customers WHERE customerid='" + ID + "'";
        SqlConnection Con 
= new SqlConnection(ConStr);
        SqlCommand Cmd 
= new SqlCommand(QueryStr,Con);
        
try
        
...{
            Con.Open();
            Cmd.ExecuteNonQuery();
            BindData();
            Response.Write(
"<script>alert('成功删除');</script>");
        }

        
catch (Exception ex)
        
...{
            Response.Write(
"<script>alert('删除有误,请检查该表是否与其他表有约束');</script>");
        }

        
finally
        
...{
            Con.Dispose();
        }

    }


    
//****************************************************************************************************************
    
//当它写为“return   confirm(...);”的时候,后边的任何客户端代码都不可能执行,
    
//因此你注册时设计处理不可能执行。有些所谓的“示例”代码给你这样写的时候,你要注意,
    
//它应该并不为按钮注册事件处理方法(注册了就很可笑了,因为根本无用),而是通过设置按钮的CommandName来让gridview处理。
    
//这种写法下,按钮仅仅是提供命令名称和参数。   
    
//如果你要让后边的代码执行,应该写:   
    
//b.Attributes["onclick"]   =   "if(!confirm('你真的要删除该条记录么?'))return   false;";   
    
//*****************************************************************************************************************
    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    
...{
        
if (e.Row.RowType == DataControlRowType.DataRow)
        
...{
            
if (e.Row.RowState == DataControlRowState.Normal || e.Row.RowState == DataControlRowState.Alternate)
            
...{
                
//这种写法不管你点击的是什么,后面的代码都不会执行。
                
//((Button)e.Row.Cells[2].Controls[0]).Attributes.Add("onclick", "javascript:return confirm('确定要删除"" + e.Row.Cells[3].Text + ""吗?')");
                
//正确的写法
                ((Button)e.Row.Cells[2].Controls[0]).Attributes["onclick"= "if(!confirm('你真的要删除" + e.Row.Cells[3].Text + "这条记录么?'))return   false;";   
            }

        }

    }

在点击删除按钮的时候弹出Confirm对话框有好几种办法,一种就是我刚才代码里的方法,在后台添加。还有一种是利用了ASP.NET2.0提供的一个新特性onclientClick,直接写你需要的脚本就可以,是不是很方便啊。如图.

 

需要注意的是要用这个方法的前提是你要把添加的这个这个转化为模板列才可以,在gridview里普通的删除按钮是没有这个属性的。

asp.net c# 对GridView编辑,删除,更新,取消的操作

GridView添加了编辑,删除,管理列后的操作//编辑 protected void gvwOne_RowEditing(object sender, GridViewEditEventAr...
  • jy5212
  • jy5212
  • 2010-06-08 12:08:00
  • 1639

GridVie中通过RowCommand 进行 编辑 保存 删除操作

aspx页面         --%>                        --%>                                                ...
  • qq_34496400
  • qq_34496400
  • 2016-05-29 15:00:34
  • 641

[ASP.NET]GridView自定义编辑,更新,取消,删除

1,问题描述 今天在网上看见有人问怎么样自定义GridView的编辑,更新,取消,删除按钮,GridView自带的太难看 2,达到要求 变换编辑,更新,取消,删除按钮   3,实现方法 ...
  • cpcpc
  • cpcpc
  • 2011-12-13 10:48:06
  • 15014

gridview的更新和取消的问题。网上有人问我说数据在update后还保持编辑的状态。怎么改变起状态。

 void BindData()    {        string sql = "select top 10 ID,jobno,jobfixno,jobtype from jobse";     ...
  • antiking
  • antiking
  • 2006-05-12 09:48:00
  • 5473

GridView编辑更新时数据没有改变,总是原来的值

原因是:我在点击更新时又执行了page_load方法,又将数据库的值绑定到了gridview上,所以永远都是数据库的值 解决办法:判断页面是不是第一次加载。在page_load方法里加上 ...
  • zcwforali
  • zcwforali
  • 2016-09-16 09:41:06
  • 431

GridView实现双击进行编辑,更新

虽然标题是原创,但是其实主要的思想呢还是接见了晓风残月的思路,今天在晓风残月的博客上看到了如何利用GridView来实现双击进行编辑。我决定动手实现一下,由于还没有实现双击进行更改操作,所以顺便就把这...
  • oyjd614
  • oyjd614
  • 2007-09-24 18:45:00
  • 3193

GridView行编辑、更新、取消、删除事件用法

注意:当启用编辑按钮时,点击编辑按钮后会使一整行都切换成文本框。为了是一行中的一部分是文本框,需要把以整行的所有列都转换成模板,然后删掉编辑模板中的代码。这样就能使你想编辑的列转换成文本框。 1.界...
  • yoyoshaoye
  • yoyoshaoye
  • 2011-08-28 21:17:44
  • 13506

对gridview进行动态添加,删除,修改,查询

  • 2012年12月07日 10:44
  • 211KB
  • 下载

C# GridView 例子编辑更新删除功能

  • 2008年10月18日 12:19
  • 3.58MB
  • 下载
收藏助手
不良信息举报
您举报文章:GridView基本的编辑,更新,删除操作
举报原因:
原因补充:

(最多只允许输入30个字)