<asp:GridView ID="GV" runat="server" AutoGenerateColumns="False" AllowPaging="True" OnPageIndexChanging="GV_PageIndexChanging" Width="60%" CellPadding="4" PageSize="9" ForeColor="#333333" GridLines="None">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="chkSelected" Visible="True" GroupName="chk" runat="server">
</asp:CheckBox>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="BookId" HeaderText="编号" />
<asp:BoundField DataField="BookName" HeaderText="图书名" />
<asp:HyperLinkField DataNavigateUrlFields="BookId" DataNavigateUrlFormatString="SafePages/BookUpdate.aspx?book_id={0}"
HeaderText="修改" Text="修改" />
</Columns>
<FooterStyle BackColor="#990000" ForeColor="White" Font-Bold="True" />
<RowStyle BackColor="#FFFBD6" ForeColor="#333333" />
<SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />
<PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" />
<HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="White" />
</asp:GridView>
说明:
1. 在单击某一页导航按钮时,但在 GridView 控件处理分页操作之前,将引发 PageIndexChanging 事件。这使您可以提供一个这样的事件处理方法,即每次发生此事件时执行一个自定义例程(如取消分页操作)。
例如:
protected void GV_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GV.PageIndex = e.NewPageIndex;
InitData(); //初始化页面中的控件
Query(); //初始化gridview中的数据
}
2.GridView.CellPadding
获取或设置单元格的内容和单元格的边框之间的空间量。
3.TemplateField
使用 TemplateField 类来创建自定义用户界面 (UI)。根据在其中使用 TemplateField 对象的数据绑定控件,该对象会以不同的方式显示。例如,GridView 控件将 TemplateField 对象显示为一列,而 DetailsView 控件则将该对象显示为一行。
可以使用下表中列出的模板为 TemplateField 对象的不同部分定义自定义模板。
为 TemplateField 对象中的交替项指定要显示的内容。 | |
为 TemplateField 对象中处于编辑模式中的项指定要显示的内容。 | |
为 TemplateField 对象的脚注部分指定要显示的内容。 | |
为 TemplateField 对象的标头部分指定要显示的内容。 | |
为 TemplateField 对象中处于插入模式中的项指定要显示的内容。只有 DetailsView 控件支持该模板。 | |
为 TemplateField 对象中的项指定要显示的内容。 |
4.DataNavigateUrlFormatString="SafePages/BookUpdate.aspx?book_id={0}"
BookUpdate.aspx页面
public partial class BookUpdate : System.Web.UI.Page
{
protected void Page_Load(object sender, System.EventArgs e)
{
if (!IsPostBack)
InitData();
}
/// <summary>
/// 加载图书详细信息
/// </summary>
private void InitData()
{
int bookId = Convert.ToInt32(Request.QueryString["book_id"]);
Book book = new Book();
book.LoadData(bookId);
Category category = new Category();
category.LoadData(book.CategoryID);
TextBoxBookName.Text = book.BookName;
//初始化:类别下拉框中的数据,用Category表中的数据进行绑定
DataTable dt = Category.Query(new Hashtable());
foreach (DataRow dr in dt.Rows)
{
DropDownListCategory.Items.Add(new ListItem(dr["CategoryName"].ToString(), dr["CategoryId"].ToString()));
}
foreach (ListItem item in DropDownListCategory.Items)
{
if (item.Value == book.CategoryID.ToString())
{
item.Selected = true;
break;
}
}
TextBoxPrice.Text = book.Price.ToString();
TextBoxPublisher.Text = book.Publisher;
TextBoxPublishDate.Text = book.PublishDate.ToString("d");
TextBoxAuthor.Text = book.Author;
TextBoxPageNum.Text = book.PageNum.ToString();
TextBoxDescription.Text = book.Description;
}
/// <summary>
/// 返回按钮单击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ButtonBack_Click(object sender, System.EventArgs e)
{
Response.Write("<Script Language=JavaScript>history.go(-2);</Script>");
}
/// <summary>
/// 提交按钮单击事件:修改图书信息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ButtonOK_Click(object sender, EventArgs e)
{
//构造book信息哈希表
Hashtable ht = new Hashtable();
ht.Add("BookName", TextBoxBookName.Text.Trim());
ht.Add("CategoryId", DropDownListCategory.SelectedValue);
ht.Add("Price", TextBoxPrice.Text.Trim());
ht.Add("Publisher", TextBoxPublisher.Text.Trim());
ht.Add("PublishDate", TextBoxPublishDate.Text.Trim());
ht.Add("Author", TextBoxAuthor.Text.Trim());
ht.Add("PageNum", TextBoxPageNum.Text.Trim());
ht.Add("Description", TextBoxDescription.Text.Trim());
string uploadName = "";
string pictureName = "";
//图片名,以当前时间为文件名,确保文件名没有重复
if (InputPictureFile.Value != "")
{
int idx = uploadName.LastIndexOf(".");
string suffix = uploadName.Substring(idx);//文件后缀
//Ticks属性的值为自 0001 年 1 月 1 日午夜 12:00 以来所经过时间以 100 毫微秒为间隔表示时的数字。
pictureName = DateTime.Now.Ticks.ToString() + suffix;
ht.Add("PictureUrl", pictureName);
}
//添加图书
try
{
Book book = new Book();
book.BookID = Convert.ToInt32(Request.QueryString["book_id"]);
book.Update(ht);
//上传图片到目录"/Images/"中
if (uploadName != "")
{
string path = Server.MapPath("~/Images/");
InputPictureFile.PostedFile.SaveAs(path + pictureName);
}
Response.Redirect("../BookList.aspx");
}
catch (Exception ex)
{
Response.Write(ex);
}
}