本文纯属个人见解,是对前面学习的总结,如有描述不正确的地方还请高手指正~
1、 新建一个网站,在网站中新建一个”images”文件夹,将FTP中的a.jpg和e.jpg拷贝到images文件夹中。
2、 新建test数据库,在test数据库中新建book_info表,结构如下:
并向表中插入两条记录,两条记录中image_path字段的值分别为a.jpg和e.jpg在网站中的路径。
3、 新建Gridview.aspx页面,通过GridView控件按照上面的格式表现book_info中的数据:
当用户单击“详细信息”时(在超链接中表现“详细信息”不需设置HyperLinkField的“DataTextField”属性,只要设置”Text”属性的值为”详细信息”就行),导航到detail.aspx页面,在detail.aspx中表现该条记录的详细信息。
4、 在GridView.aspx页面中,通过在GridView控件中手动添加代码来在控件中添加一个文本框:
<asp:templatefieldheadertext="Type">
<itemtemplate>
<asp:TextBoxID="TextBox1"datasourceid="SqlDataSource1"
runat="server"Text='<%#Eval("book_id") %>'></asp:TextBox>
</itemtemplate>
</asp:templatefield>
此段代码放置在<Columns>和</Columns>里,作用通过建立一个模版,在GridView控件中添加一列,此列中包括一个文本框,将文本框中绑定到book_id列。
5、 参照PPT中的内容,添加gridview3.aspx页面,在此页面中只添加一个GridView控件。通过编程来实现在GridView中编辑数据。
A、首先通过编程将book_info表中的数据通过GridView表现;
B、再在GridView中添加“编辑”按钮:在”源“视图中在<Columns></Columns>中添加代码:
<asp:CommandFieldShowEditButton="true"/>
C、编辑GridView控件的RowEditing、RowUpdating、RowCancelingEdit事件。
注:e.RowIndex 为被编辑行在GridView中的行号(从0开始)
GridView1.Rows[e.RowIndex]. 为GridView中被编辑的行。
GridView1.Rows[e.RowIndex].Cells[1]. 为GridView中被编辑的行的第2列。
GridView1.Rows[e.RowIndex].Cells[1].Controls[0]为GridView中被编辑的行的第2列中的第一个控件。
GridView.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="GridView.aspx.cs" Inherits="GridView" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="book_id" DataSourceID="SqlDataSource1" EnableModelValidation="True"> <Columns> <asp:BoundField DataField="book_name" HeaderText="book_name" SortExpression="book_name" /> <asp:BoundField DataField="author" HeaderText="author" SortExpression="author" /> <asp:BoundField DataField="price" HeaderText="price" SortExpression="price" /> <asp:ImageField DataImageUrlField="image_path" HeaderText="图片"> </asp:ImageField> <asp:HyperLinkField HeaderText="详细信息" NavigateUrl="~/Default.aspx" Text="详细信息" /> <asp:templatefield headertext="Type"> <itemtemplate> <asp:TextBox ID="TextBox1" datasourceid="SqlDataSource1" runat="server" Text='<%# Eval("book_id") %>'></asp:TextBox> </itemtemplate> </asp:templatefield> </Columns> </asp:GridView> </div> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:testConnectionString %>" SelectCommand="SELECT * FROM [book_info]"></asp:SqlDataSource> </form> </body> </html>
gridview3.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="GridView3.aspx.cs" Inherits="GridView3" MaintainScrollPositionOnPostback="True" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <asp:GridView ID="GridView1" runat="server" EnableModelValidation="True" onrowcancelingedit="GridView1_RowCancelingEdit" onrowediting="GridView1_RowEditing" onrowupdating="GridView1_RowUpdating" > <Columns> <asp:CommandField ShowEditButton="True" /> </Columns> </asp:GridView> </div> </form> </body> </html>
gridview3.aspx.cx
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data.SqlClient; using System.Configuration; using System.Data; public partial class GridView3 : System.Web.UI.Page { //创立连接对象 public SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["testConnectionString"].ConnectionString); protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { myBind(); } } /// <summary> /// GridViews数据绑定 /// </summary> public void myBind() { string sqlStr = "select * from book_info"; SqlDataAdapter myDataAdapter = new SqlDataAdapter(sqlStr, conn); DataSet myDataSet = new DataSet(); myDataAdapter.Fill(myDataSet, "book_info"); GridView1.DataSource = myDataSet; GridView1.DataBind(); } //编辑 protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) { //设计编辑行的索引 GridView1.EditIndex = e.NewEditIndex; myBind(); } //更新 protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) { string book_id = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString(); string book_name = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[2].Controls[0])).Text.ToString(); string author = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[3].Controls[0])).Text.ToString(); string press = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[4].Controls[0])).Text.ToString(); string price = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[5].Controls[0])).Text.ToString(); string image_path = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[6].Controls[0])).Text.ToString(); string sqlStr = "update book_info set book_name=@book_name,author=@author,press=@press,price=@price,image_path=@image_path where book_id=@book_id"; SqlParameter[] parameters = {new SqlParameter("@book_id", Convert.ToInt32(book_id)), new SqlParameter("@book_name",book_name), new SqlParameter("@author", author), new SqlParameter("@press",press), new SqlParameter("@price",Convert.ToInt32(price)), new SqlParameter("@image_path", image_path)}; string sql = ConfigurationManager.ConnectionStrings["testConnectionString"].ConnectionString; using (SqlConnection conn = new SqlConnection(sql)) { conn.Open(); using (SqlCommand cmd = conn.CreateCommand()) { cmd.CommandText = sqlStr; cmd.Parameters.AddRange(parameters); cmd.ExecuteNonQuery(); } } GridView1.EditIndex = -1; myBind(); } //取消操作 protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) { GridView1.ShowFooter = false; GridView1.EditIndex = -1; myBind(); } }
文章结束给大家分享下程序员的一些笑话语录: 刹车失灵
有一个物理学家,工程师和一个程序员驾驶着一辆汽车行驶在阿尔卑斯山脉 上,在下山的时候,忽然,汽车的刹车失灵了,汽车无法控制地向下冲去, 眼看前面就是一个悬崖峭壁,但是很幸运的是在这个悬崖的前面有一些小树 让他们的汽车停了下来, 而没有掉下山去。 三个惊魂未定地从车里爬了出来。
物理学家说, “我觉得我们应该建立一个模型来模拟在下山过程中刹车片在高 温情况下失灵的情形”。
工程师说, “我在车的后备厢来有个扳手, 要不我们把车拆开看看到底是什么 原因”。
程序员说,“为什么我们不找个相同的车再来一次以重现这个问题呢?”
--------------------------------- 原创文章 By 编辑和控件 ---------------------------------