问题是这样的:
在A页面有一个GridView,有一个HyperLinkField列通过A页面的GridView的DataKeysName转到B页面,在B页面通过Request取到A页面传来的DataKeysName,当B页面转到C页面后再转回到B页面时,B就得不到本来的那个DataKeysName了,然后程序就报错"未将对象引用设置到对象的实例。"
以下是B页面的部分代码:
protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            BindToGVList();
        }
    }
    protected void BindToGVList()
    {
        string PK_Project = Request["PK_Project"].ToString();  //A页面传来的DataKeysName
        string sqlstr = "select * from ProjectList where PK_Project='" + PK_Project + "'";
        gvList.DataKeyNames = new string[] { "PK_ProjectList" };
        sqloperate.gvDataBind(gvList, sqlstr);
    }

解决方案 »

  1.   

    A页面的GridView定义了DataKeyNames
    gvProjectList.DataKeyNames = new string[] { "PK_Project" };
    到了B页面用
    string PK_Project = Request["PK_Project"].ToString(); 
    取值
      

  2.   

    C页面传到B页面代码呢? B页面接收新值是哪
      

  3.   

    你从C到B是怎么到的。。如果跳转了。。肯定要从C把值传给B啊。。就是A传给B一样啊。。
      

  4.   

    我C到B就是一个LinkButton.
    我从C转到B的时候,这个PK_Project值是多少已经不知道了,怎么办?
      

  5.   

    B到C的值和A到B的值没有关系的
      

  6.   

    简单说,你就把这个值传给c就是了,到b的时候不就还是存在的么  搞不懂 有那么麻烦么 
    真解决不了,你就麻烦点 用 session保存数组 这样保险 不过不推荐
      

  7.   

        你想多个页面使用同一个值的话就用Session和Application吧.
      

  8.   

    那你的把从A传到B的值,也要作为传递参数从B传到C,而后再把这个值从C传到B
    那这样就不会出现错误!
    呵呵