【发布时间】:2011-07-11 15:29:02
【问题描述】:
我在更新面板中有一个 gridview (ASP.net)。我还有一个“保存”按钮 这样当我单击“保存”时,它会遍历网格视图的所有行并将数据传递给存储过程以更新每一行。这太慢了,因为有时即使没有发生更改,我也会更新数据库。
我决定在我的 gridview 中添加一个字段,如下所示:
<asp:TemplateField>
<ItemTemplate>
<input type="hidden" id="hdnIsChanged" runat="server" />
</ItemTemplate>
</asp:TemplateField>
也就是说,我添加了一个隐藏字段,其想法是,如果我的 gridview 行中的文本框或下拉值发生更改,我将使用值 1 更新此隐藏字段。所以我将其添加到我的 gvLineItems_RowDataBound 事件中:
Dim hiddenField As HtmlInputHidden = DirectCast(e.Row.FindControl("hdnIsChanged"), HtmlInputHidden)
'the line item date
Dim tLID As TextBox = CType(e.Row.FindControl("txtLineItemDate"), TextBox)
tLID.Attributes.Add("onchange", "document.getElementById('" + hiddenField.ClientID + "').value=1")
'the amount field
Dim ta As TextBox = CType(e.Row.FindControl("txtAmount"), TextBox)
ta.Attributes.Add("onchange", "document.getElementById('" + hiddenField.ClientID + "').value=1")
这个想法是让 onchange 将值设置为 1。然后在我的保存按钮中我会做一些事情来达到这个效果:
For Each Row As GridViewRow In Me.gvLineItems.Rows
Dim hiddenField As HtmlInputHidden = DirectCast(Row.FindControl("hdnIsChanged"), HtmlInputHidden)
If (hiddenField.Value = "1") Then
'perform the update...
我遇到的问题是,当我调试时,我看到hiddenField.Value 始终为 1,无论我是否更改文本框中的值。我发现了这个类似的帖子:http://forums.asp.net/t/1592125.aspx/1
这似乎对那个人有用,但对我来说价值总是 1...
【问题讨论】:
-
任何 javascript 错误或其他调试信息?
-
@Dave - 如何在 IE9 中显示 JS 错误。在 IE8 中,它们曾经在状态栏中...
-
我还没有使用 IE9。也许按 f12 看看它是否会调出开发者工具?
-
@Dave - 在我最初的帖子中查看上面的更新...
-
@Anyone - 请任何人知道为什么
hiddenfield的值总是1,即使我不更改文本框的值?
标签: javascript asp.net vb.net hidden-field