无法取得修改后的textbox中的值。取得的值还是原前一个页面传过来的值,修改后的值无法取得。*****高分求解,希望能快点结贴!*****

thbird 2004-10-25 09:47:08
无法取得修改后的textbox中的值。取得的值还是原前一个页面传过来的值,修改后的值无法取得。*****高分求解,希望能快点结贴!*****



//单出browse.aspx页面中dataGrid中的某一行,进入编辑页面--Edit.aspx

******Edit.aspx*******

Dim Id As Integer

Private 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
...全文
178 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
thbird 2004-10-25
  • 打赏
  • 举报
回复
结贴~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~!
goody9807 2004-10-25
  • 打赏
  • 举报
回复
Dim Id As Integer

改为shared Id As Integer
Eddie005 2004-10-25
  • 打赏
  • 举报
回复
其实,Session或ViewState都可以不用;直接如下
rowAdd = dt.Rows.Find(Request.QueryString("reId"))
Request.QueryString是不用担心刷新就丢了的问题
Eddie005 2004-10-25
  • 打赏
  • 举报
回复
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
Eddie005 2004-10-25
  • 打赏
  • 举报
回复
If Not IsPostBack Then
ViewState("id") = Request.QueryString("reId") // 从上browse.aspx页面取得序号值reid赋给全局变量Id,假设我点击第6行,则id值为5。目前为止正常!
End If
thbird 2004-10-25
  • 打赏
  • 举报
回复
再顶一下!!!
thbird 2004-10-25
  • 打赏
  • 举报
回复
谢谢楼上三位。
再顶!
zhn0410 2004-10-25
  • 打赏
  • 举报
回复
我帮你顶一下。
hbzxf 2004-10-25
  • 打赏
  • 举报
回复
ViewState也可以
噯卟釋手 2004-10-25
  • 打赏
  • 举报
回复
up
thbird 2004-10-25
  • 打赏
  • 举报
回复
问题还没解决呀,看楼上的楼上! 顶!!!!!!帮顶的也有分!!!!
yichuan1982 2004-10-25
  • 打赏
  • 举报
回复
同意,俺就不多说了,呵呵
thbird 2004-10-25
  • 打赏
  • 举报
回复
谢谢各位的支持。
按照 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
xiaohutushen 2004-10-25
  • 打赏
  • 举报
回复
帮忙UP!
接分^_^
zpisgod 2004-10-25
  • 打赏
  • 举报
回复
把Id = Request.QueryString("reId")
放到If Not IsPostBack Then外面就可以了

原因是按钮事件是在postback后才会触发,但是这时由于If Not IsPostBack Then....所以id就取不到值了
yanyzty 2004-10-25
  • 打赏
  • 举报
回复
Id = Request.QueryString("reId")
拿到If Not IsPostBack Then
外边
或将 Id设为 static
即 设为静态变量,会存住值的
luluso 2004-10-25
  • 打赏
  • 举报
回复
楼主的问题不是回发。是它误认为Id是个全局变量了.
用session保持值就行了.
luluso 2004-10-25
  • 打赏
  • 举报
回复
晕啊。一发完就看到错了.
上面的
Session("Id") = Request.QueryString("reId")
把Sessopm改成Session,是用Session保持值的..上面第一行手快打错了...
luluso 2004-10-25
  • 打赏
  • 举报
回复
Sessopm("Id") = Request.QueryString("reId")

然后用:
rowAdd = dt.Rows.Find(Sessopm("Id"))

用session保留值..你所说的那个Id并非全局变量.它在一定范围内有效..
在你出错那里。它是无效的.所以为0

你注意下语法.我习惯写c#
lxhlizhenhao 2004-10-25
  • 打赏
  • 举报
回复
将值赋给一hidden控件,然后取hidden的值即可
加载更多回复(3)

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧