无法取得修改后的textbox中的值。取得的值还是原前一个页面传过来的值,修改后的值无法取得。*****高分求解,希望能快点结贴!*****//单出browse.aspx页面中dataGrid中的某一行,进入编辑页面--Edit.aspx******Edit.aspx*******   Dim Id As IntegerPrivate Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        If Not IsPostBack Then
            Id = Request.QueryString("reId")   // 从上browse.aspx页面取得序号值reid赋给全局变量Id,假设我点击第6行,则id值为5。目前为止正常!
        End If
End Sub//修改完成单击提交按钮
Private Sub bSubmitClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bSubmit.Click
        Dim strSql As String = "select * from coAsset"
        Dim strDsn As String = "Persist Security Info=False;User ID=sa;Initial Catalog=xfData;Data Source=localhost"
        Dim Da As SqlDataAdapter
        Dim Ds As DataSet = New DataSet
        Dim dt As DataTable
        Dim keys(1) As DataColumn
        Da = New SqlDataAdapter(strSql, strDsn)
        Da.Fill(Ds, "table1")
        dt = Ds.Tables("table1")
        Dim rowAdd As DataRow
        keys(0) = dt.Columns(0)
        dt.PrimaryKey = keys
        rowAdd = dt.Rows.Find(Id)  //问题在这里,这里的Id的值为“0”,而非上面我要的“5”。请兄弟帮帮忙!!!
        .....
End Sub

解决方案 »

  1.   

    Id = Request.QueryString("reId")   
    拿到If Not IsPostBack Then
    外边
      

  2.   

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
                Id = Request.QueryString("reId")   // 从上browse.aspx页面取得序号值reid赋给全局变量Id,假设我点击第6行,则id值为5。目前为止正常!
    End Sub
      

  3.   

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
           Id = Request.QueryString("reId")   // 从上browse.aspx页面取得序号值reid赋给全局变量Id,假设我点击第6行,则id值为5。目前为止正常!
    End Sub说明,由于页面刷新不保存变量,所以每次刷新都要给变量Id赋值!
      

  4.   

    将值赋给一hidden控件,然后取hidden的值即可
      

  5.   

    Sessopm("Id") = Request.QueryString("reId")然后用:
    rowAdd = dt.Rows.Find(Sessopm("Id")) 用session保留值..你所说的那个Id并非全局变量.它在一定范围内有效..
    在你出错那里。它是无效的.所以为0你注意下语法.我习惯写c#
      

  6.   

    晕啊。一发完就看到错了.
    上面的
    Session("Id") = Request.QueryString("reId")
    把Sessopm改成Session,是用Session保持值的..上面第一行手快打错了...
      

  7.   

    楼主的问题不是回发。是它误认为Id是个全局变量了.
    用session保持值就行了.
      

  8.   

    Id = Request.QueryString("reId")   
    拿到If Not IsPostBack Then
    外边
    或将 Id设为 static
    即 设为静态变量,会存住值的
      

  9.   

    把Id = Request.QueryString("reId")   
    放到If Not IsPostBack Then外面就可以了原因是按钮事件是在postback后才会触发,但是这时由于If Not IsPostBack Then....所以id就取不到值了
      

  10.   

    谢谢各位的支持。
    按照 guying999的方法,dt.rows.Find(id)中的id是能得到5,但:Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
                Id = Request.QueryString("reId") 
                tbName.Text = Request.QueryString("reName")   // 这是从上browse.aspx页面DataGrid控件上单击某行取得的该行reName字段的值,比如是“thbird",现在我把它赋给tbName(textbox控件)的.text属性。
            
    End Sub//现在我想修改tbName.text中的值,把它改成“thbird12”,修改完成单击提交按钮:
    Private Sub bSubmitClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bSubmit.Click
            Dim strSql As String = "select * from coAsset"
            Dim strDsn As String = "Persist Security Info=False;User ID=sa;Initial Catalog=xfData;Data Source=localhost"
            Dim Da As SqlDataAdapter
            Dim Ds As DataSet = New DataSet
            Dim dt As DataTable
            Dim keys(1) As DataColumn
            Da = New SqlDataAdapter(strSql, strDsn)
            Da.Fill(Ds, "table1")
            dt = Ds.Tables("table1")
            Dim rowAdd As DataRow
            keys(0) = dt.Columns(0)
            dt.PrimaryKey = keys
            rowAdd = dt.Rows.Find(Id)  
            rowAdd("name") = tbName.text    // 问题出来了,由于按提交按钮时,程序又会重新执行一遍page_load过程,导致tbName.text的值又恢复成“thbird”,而非我想要的“thbird12”。我想问问各位大哥,除了用session,还有其它解决方法吗?
            .....
    End Sub
      

  11.   

    If Not IsPostBack Then
                ViewState("id") = Request.QueryString("reId")   // 从上browse.aspx页面取得序号值reid赋给全局变量Id,假设我点击第6行,则id值为5。目前为止正常!
            End If
      

  12.   

    Private Sub bSubmitClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bSubmit.Click
            Dim strSql As String = "select * from coAsset"
            Dim strDsn As String = "Persist Security Info=False;User ID=sa;Initial Catalog=xfData;Data Source=localhost"
            Dim Da As SqlDataAdapter
            Dim Ds As DataSet = New DataSet
            Dim dt As DataTable
            Dim keys(1) As DataColumn
            Da = New SqlDataAdapter(strSql, strDsn)
            Da.Fill(Ds, "table1")
            dt = Ds.Tables("table1")
            Dim rowAdd As DataRow
            keys(0) = dt.Columns(0)
            dt.PrimaryKey = keys
            rowAdd = dt.Rows.Find(ViewState("id"))  
            rowAdd("name") = tbName.text    // 问题出来了,由于按提交按钮时,程序又会重新执行一遍page_load过程,导致tbName.text的值又恢复成“thbird”,而非我想要的“thbird12”。我想问问各位大哥,除了用session,还有其它解决方法吗?
            .....
    End Sub
      

  13.   

    其实,Session或ViewState都可以不用;直接如下
     rowAdd = dt.Rows.Find(Request.QueryString("reId"))
    Request.QueryString是不用担心刷新就丢了的问题   
      

  14.   

    Dim Id As Integer改为shared Id   As Integer