我先用girdview来显示数据,然后用HyperLinkField转到另外个页面,default.aspx?id={0},然后在default.aspx也面上弄了个detailview控件
指定数据源为,getbookbyid(int id),id为QueryString,图书也能正常显示
但是我做到更新的时候出问题了,更新的时候要调用getbookbyid(int id),
取出当前图书,但是就这个里id为0,也就是说id取不出,我被这个问题困闹很久了,都没结果,我在detailview的pageload事件里还特地把id = Request.QueryString["id"]给上去,但是更新就是更新不了,老是提示未将对象引用到示例把我可郁闷死了,希望高手帮我看看,我这个是怎么回事
都想了很长时间了 

解决方案 »

  1.   

    调试下看看 跟新之后 ID 是否还有值。 代码拿出来看看,一般来说是你postback 之后,ID重新赋值了。 所以取不到图书信息。先检查看看如果不行把代码贴出来吧。
      

  2.   

     protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                string id = "";
                if (Request.QueryString["id"] == null)
                    id = "1";
                else
                    id = Request.QueryString["id"];
                ViewState["id"] = id;
            }
        }
        protected void DetailsView1_ItemUpdating(object sender, DetailsViewUpdateEventArgs e)
        {
            string id = Request.QueryString["id"];
            DropDownList dr = this.DetailsView1.FindControl("DropDownList1") as DropDownList;
            this.odsbook.UpdateParameters.Add("Publisherid", dr.SelectedValue);
        }
        protected void odspublisher_Updating(object sender, ObjectDataSourceMethodEventArgs e)
        {
          
        }
        protected void DetailsView1_DataBound(object sender, EventArgs e)
        {        
            if (DetailsView1.CurrentMode == DetailsViewMode.Edit)
            {
                DropDownList drop = this.DetailsView1.FindControl("DropDownList1") as DropDownList;
                HiddenField hdf = this.DetailsView1.FindControl("HiddenField1") as HiddenField;
                drop.SelectedValue = hdf.Value.Trim();
            }
           
            
        }
        protected void DetailsView1_ModeChanging(object sender, DetailsViewModeEventArgs e)
        {        string id = "";
            if (Request.QueryString["id"] == null)
                id = "1";
            else
                id = Request.QueryString["id"];
            ViewState["id"] = id;
           
        }
    }
    public static void UpdateBook(string title, int publisherid, string toc, decimal unitprice, DateTime publishdate, int id)
            {
                Book book = BookService.GetBookById(id);
                book.Title = title;
                book.Publisher = PublisherService.GetPublisherById(publisherid);
                book.UnitPrice = unitprice;
                book.PublishDate = publishdate;
                book.Toc = toc;
                BookService.UpdateBook(book);
            }然后就是这个提示出错id为0
      

  3.   

    你调用这个UpdateBook方法的时候,你的id有值吗??