我的页面有个gridview是个用来查询的页面,从别的页面传回来的变量如下
if not me.ispostback then
    sqlstr = request.querystring("sqlstr")
    tablename = request.querystrng("tablename")
end if这是页面第一被调用时传来的变量可是我在点了gridview里的删除按钮去掉用这些变量是,跟踪发现这两个变量sqlstr,tablename已经是空值了。
怎么回事啊??有没有解决办法?

解决方案 »

  1.   

     去掉if not me.ispostback试试。
      

  2.   

    if not me.ispostback then
      sqlstr = request.querystring("sqlstr")
      tablename = request.querystrng("tablename")
    end if
    \
    看你的变量在哪定义的。
    或者你直接在调用的时候直接用Page.request.querystring("sqlstr")而不用变量
      

  3.   

    呵呵,楼主还不理解asp.net程序的流程,每次有服务器事件,就会回发(相当于提交页面)到后台,经过处理后,生成新的页面(自然就将所有变量复位了)再返回客户端。
    要保存变量的值,可以用ViewState,比如上面的代码改写成:
    if not me.ispostback then
      ViewState["sqlstr"] = request.querystring("sqlstr")
      ViewState["tablename"] = request.querystrng("tablename")
    end if取变量值:
    string sqlstr = (string)ViewState["sqlstr"];
    string tablename = (string)ViewState["tablename"]
      

  4.   

    不用viewstate的,你的值不是在querystring里面嘛,只不过不要加上postback的测试,把if判断去掉,让
    sqlstr = request.querystring("sqlstr")
    tablename = request.querystrng("tablename")
    每次都执行,就有值了。
      

  5.   

    可以用隐藏的控件,或者是viewstate来保存这两个变量。
      

  6.   

    用隐藏域吧  hiddenfield
      

  7.   

    把取值放到ispostback外边试试...
      

  8.   

    !ispostback 里面的事件,在第二次回发的时候,不执行。而你的变量,又重新实例化了。所以就这样了。
      

  9.   

    建议不要给页面添加全局变量,没有用。页面加载完后值就没有了。如果要保存变量,建议用ViewState或者Hiddenfield赋值
      

  10.   

    a = Request.QueryString("sqlstr").ToString()
    Public Property a() As String
        Get
            Return ViewSate("a").ToString()
        End Get
        Set(ByVal value As String)
            ViewSate("a") = value
        End Set
    End Property