___________________________前台BookList.aspx页面的“源”_____________________________
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<link href="Css/css.css" rel="stylesheet" />
    <title>无标题页</title>
</head>
<body>
    <form id="form1" runat="server">
<div class="STYLE4">
<div id="divOrder">
    <div style="text-align:left;margin:20px 0 20px 0;">排序方式:
    <asp:Button ID="btnDate" runat="server" Text="出版日期" OnClick="btnDate_Click" CssClass="anniu"/>       
       | <asp:Button ID="btnPrice" runat="server" Text="价格" OnClick="btnPrice_Click" CssClass="anniu"/></div>
</div>
</div><div class="STYLE4" >
    <asp:DataList ID="dlBooks" runat="server">
        <ItemTemplate>
            <table>
                <tr>
                  <td rowspan="2"><a 
                                    onclick="window.location='BookDetail.aspx?bid=<%# Eval("Id")%>'"><img 
                                    style="CURSOR: hand" height="121" alt="<%# Eval("Title") %>" 
                                    src="<%# GetUrl(Eval("ISBN").ToString()) %>" width="95" /></a> </td>
                  <td style="FONT-SIZE: small; COLOR: red" width="650"><a href="BookDetail.aspx?bid=<%# Eval("Id")%>" name="link_prd_name" target="_blank" class="STYLE5" id="link_prd_name" onclick="return s('9317290','01.54.06.06','',this.href)"><%# Eval("Title") %></a></td>
                </tr>
                <tr>
                  <td style="FONT-SIZE: small" align="left"><%# Eval("Author") %><br />
                    <br />
                    <%# GetCut(Eval("ContentDescription").ToString(),150) %> </td>
                </tr>
                <tr>
                  <td style="FONT-SIZE: small;" align="right" colspan="2"><%# Eval("UnitPrice") %></td>
                </tr>
            </table>
        </ItemTemplate>
        <SeparatorTemplate>
        <hr />
        </SeparatorTemplate>
    </asp:DataList>&nbsp;
</div>
<div class="STYLE4" style="text-align:left;margin:20px 0 20px 0;">
<asp:Label runat="server" ID="lblCurrentPage"></asp:Label><asp:Button ID="btnPrev" runat="server" Text="上一页" OnClick="btnPrev_Click" CssClass="anniu"/> 
<asp:Button ID="btnNext" runat="server" Text="下一页" OnClick="btnNext_Click" CssClass="anniu"/></div>
    </form>
</body>
</html>
______________________________后台BookList.aspx.cs代码______________________________
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using MyBookShop.BLL;
public partial class BookList : System.Web.UI.Page
{    
    protected void Page_Load(object sender, EventArgs e)
    {        
        if (!IsPostBack)
        {
            //首次加载,赋初值
            ViewState["Page"] = 0;
            ViewState["Order"] = "";
            try
            {
                ViewState["typeid"] = Convert.ToInt32(Request.QueryString["typeid"]);//问题在这里.......!!!
            }
            catch
            {
                ViewState["typeid"] = -1;
            }
            Databind();
        }     
    }
        
    private void Databind()
    {
        PagedDataSource pdsBooks = new PagedDataSource();
        //对PagedDataSource 对象的相关属性赋值        
        pdsBooks.DataSource = BookManager.GetOrderedSmallBooksByCategoryId(Convert.ToInt32(ViewState["typeid"]), (string)ViewState["Order"]);
        pdsBooks.AllowPaging = true;
        pdsBooks.PageSize = 4;        pdsBooks.CurrentPageIndex = Pager;
        lblCurrentPage.Text = "第 " + (pdsBooks.CurrentPageIndex + 1).ToString() + " 页 共 " + pdsBooks.PageCount.ToString()+" 页";
        SetEnable(pdsBooks);               //把PagedDataSource 对象赋给DataList控件 
        dlBooks.DataSource = pdsBooks;
        dlBooks.DataBind();
    }    public string GetUrl(string isbn)
    {
        return StringHandler.CoverUrl(isbn);
    }
    public string GetCut(string content, int num)
    {
        return StringHandler.CutString(content, num);
    }
    #region 排序
    protected void btnDate_Click(object sender, EventArgs e)
    {
        ViewState["Order"] = "PublishDate";
        Pager = 0;
        btnDate.Enabled = false;
        btnPrice.Enabled = true;
        Databind();
    }
    protected void btnPrice_Click(object sender, EventArgs e)
    {
        ViewState["Order"] = "UnitPrice";
        Pager = 0;
        btnPrice.Enabled = false;
        btnDate.Enabled = true;
        Databind();
    }
    #endregion
    #region 翻页
    private void SetEnable(PagedDataSource objPds)
    {
        btnPrev.Enabled = true;
        btnNext.Enabled = true;
        if (objPds.IsFirstPage)
            btnPrev.Enabled = false;        if (objPds.IsLastPage)
            btnNext.Enabled = false;
    }
    protected void btnNext_Click(object sender, EventArgs e)
    {
        Pager++;
        Databind();
    }
    protected void btnPrev_Click(object sender, EventArgs e)
    {
        Pager--;
        Databind();
    }
    /// <summary>
    /// 当前页数
    /// </summary>
    private int Pager
    {
        get
        {
            return (int)ViewState["Page"];
        }
        set
        {
            ViewState["Page"] = value;
        }
    }
    #endregion
    
}后台代码那句话什么意思啊?这个如果是从别的页面传值过来,可是,我找了完整项目代码的其他页面,没有typeid啊???
急死了~~在线求救.....

解决方案 »

  1.   

    ViewState["typeid"] = Convert.ToInt32(Request.QueryString["typeid"]);//问题在这里.......!!!
      

  2.   

    你看一下 BookManager.GetOrderedSmallBooksByCategoryId(Convert.ToInt32(ViewState["typeid"]), (string)ViewState["Order"]);
    这个方法,接受的参数是typeid,看看里面的实现。
      

  3.   

    TypeId= Convert.ToInt32(Request.QueryString["typeid"]==null?"0":Request.QueryString["typeid"].ToString());
    接受通过post地址传送的值  
    通过属性接受
    private int TypeId
        {
            get
            {
                return (int)ViewState["typeid"];
            }
            set
            {
                ViewState["typeid"] = value;
            }
        }
      

  4.   

    TypeId是用来实现根据类型分页的 面首次加载的时候TYPEID为空,typeId= -1,
    当你点那个类型的按钮的时候,TypeID就有值了,就会实现根据类型显示数据
      

  5.   

    Request.QueryString["typeid"] 为 null 也就是请求页面没有向目标页传递typeid参数,所以问题出在请求页上
      

  6.   

      public string GetUrl(string isbn)
        {
            return StringHandler.CoverUrl(isbn);
        }
        public string GetCut(string content, int num)
        {
            return StringHandler.CutString(content, num);
        }
    划红线的的StringHandler为什么点不出来呢?