自定义gridview

本文介绍了如何在ASP.NET中自定义GridView的分页功能,包括处理PageIndexChanging事件以实现自定义逻辑。同时,文章详细讲解了GridView的CellPadding属性以及TemplateField的使用,展示了如何创建自定义用户界面。此外,还讨论了DataNavigateUrlFormatString属性在链接到其他页面时的应用,例如在BookUpdate.aspx页面中更新图书信息的流程。
摘要由CSDN通过智能技术生成

 

<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 对象的不同部分定义自定义模板。

AlternatingItemTemplate

TemplateField 对象中的交替项指定要显示的内容。

EditItemTemplate

TemplateField 对象中处于编辑模式中的项指定要显示的内容。

FooterTemplate

TemplateField 对象的脚注部分指定要显示的内容。

HeaderTemplate

TemplateField 对象的标头部分指定要显示的内容。

InsertItemTemplate

TemplateField 对象中处于插入模式中的项指定要显示的内容。只有 DetailsView 控件支持该模板。

ItemTemplate

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);
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值