当只有一个用户时,页面会表现出来。当多个用户访问该页面时,每个用户的Timer1正在使Table1的column1(布尔值)切换为False。用户越多,混乱就越疯狂。
我在另一个表(TableX)上有一个数据库触发器(triggerX),当每次某个TableX列更新时,Table1的column1被设置为True。问题是,当多个用户时,此column1在为另一个用户变为False之前切换到False。一个用户的False破坏了另一个用户的真实。用户越多,False column1就越多。
我该如何做到这一点,以便用户不会检查和更新同一个Table1的第1列第1行?
<asp:UpdatePanel runat="server" id="UpdatePanel1" UpdateMode="Conditional"
ChildrenAsTriggers="false">
<ContentTemplate>
<asp:Timer runat="server" id="Timer1" OnTick="Timer1_Tick" Interval="5000">
</asp:Timer>
<Label id="Label1">
</ContentTemplate>
</asp:UpdatePanel>
定时器vb代码每5秒完成一次..
Protected Sub Timer1_Tick(ByVal sender As Object, ByVal e As EventArgs) Handles Timer1.Tick
Dim ds As DataSet
ds = fillDataset("SELECT column1 FROM [Table1]", connstring, False)
If (ds.Tables(0).Rows(0).Item("column1") = True) Then
Using sqlCon = New SqlConnection(connstring)
sqlCon.Open()
Dim sqlText = "UPDATE Table1 SET column1='False' WHERE column1 IS NOT NULL;"
Dim cmd = New SqlCommand(sqlText, sqlCon)
cmd.ExecuteNonQuery()
End Using
UpdatePanel1.Update()
End If
End Sub
答案 0 :(得分:1)
我会存储您的记录更改的最后日期/时间。当用户加载结果时,将该日期/时间存储在隐藏字段中,以便将其回发并与当前上次日期/时间进行比较。这将消除您的混乱,并允许多个用户根据显示的最后结果进行适当更新。
或者,您可以存储&#39;版本&#39;为同一目的记录的号码。基本上,任何渐进的值都会优于是/否系统。