热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在ASP.NETGridView中获取更新的TextBox值

我有一个网页,其中包含一个数据绑定的gridview。字段之一是TemplateField文本框,

我有一个网页,其中包含一个数据绑定的gridview。字段之一是TemplateField文本框,允许用户修改数量。我在GridView的外部有一个“更新”按钮,该按钮链接到一个even,它应该使用屏幕上的值更新数据库值。

我是ASP.NET编程的新手,我很难弄清楚哪里出了问题,因为当我单击按钮时,事件会触发,但是对于我来说,我无法确定在框中获取如何获取文本的更新的“屏幕”值。我尝试阅读许多Stack Overflow页面以解决此问题,但没有找到适合我的解决方案,因此我怀疑我的设置有问题。

这是我的aspx页面:





















runat="server" AutoGenerateColumns="false" Onrowupdating="gvMain_RowUpdating" >















OnClick="btnDelete_Click"
OnClientClick="return confirm('Are you sure that you wish to delete this row of data?');" />







这是我的btnSaveQtys_Click方法中的循环。现在,我只是想先获取数据,然后再使用它来确定数据库中的数据是否需要更新,因为它是一个新值:

For Each gvr As GridViewRow In gvMain.Rows
'Check if the value is the same as the database value
Dim ID As String = gvr.Cells(GridViewInfo("mnuID")).Text
Dim ItemNumber As String = gvr.Cells(GridViewInfo("mnuItem")).Text
Dim AmountText As TextBox = gvr.FindControl("txtBoxQty")
Dim NewAmount As String = AmountText.Text
Next

我将数据存储在名为“ MainData”的数据表中,因此这是我在Page_Load方法中运行的代码,以获取初始数据或从Session的PostBack上重新获取数据:>

If Session("MainData") Isnot Nothing AndAlso CType(Session("MainData"),DataTable).Rows.Count <> 0 Then
MainData = Session("MainData")
Else
Dim Query As String = SELECT DISTINCT --Need Distinct because we have multiple customers per district,and we need the customer to get to the employee.
--Perhaps there's a field somewhere in a District table that could contain this if an employee can be assigned to a whole district?
md.dstName,mm.*
FROM [NSPrograms].[dbo].tblMonthlyMenu mm
INNER JOIN [NSPrograms].[dbo].tblMenuDistricts md ON md.dstChain = mm.mnuDistrict
AND md.dstactive = 1
INNER JOIN [NSData].[dbo].[tblCustomers] c ON c.chain_name_id = md.dstChain
INNER JOIN [NSData].[dbo].[vw_Employees] e ON c.Sales_Rep_ID = e.Employee_ID
AND LOWER(e.Email) = '#USERID#'
ORDER BY mm.mnuMonth,mm.mnuID
]]>.Value.Replace("#USERID#",username)
MainData = GetDataTable(Query,"dbNSData")
Session.Add("MainData",MainData)
End If
gvMain.DataSource = MainData
gvMain.DataBind()
gvMain.Visible = True

我觉得我缺少某种关键要素。我认为数据绑定将“神奇地”工作,以便当值在屏幕上更改时,它在DataTable中也会更改,但是我想那没有发生吗?

当我尝试运行此解决方案时,这就是我得到的。我尝试将第一行从5.00更改为10.00:

在ASP.NET GridView中获取更新的TextBox值

当我在代码中放置一个断点时,这就是我看到的变量值。请注意,我当然可以读取BoundField项目,用户ID字段不可见,而ItemItemNumber可见,但是由于某种原因,数量并未更新以匹配屏幕上的内容:

在ASP.NET GridView中获取更新的TextBox值

我缺少哪一部分导致数据绑定不“粘”?





推荐阅读
author-avatar
南非酋长
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有