|
查看: 911|回复: 2
|
各位大大请帮帮忙。。。(ASP.NET)
[复制链接]
|
|
|
小弟最近在做assignment...
有两个table, 一个是leave一个是employee.
现在要用gridview来control leave 的status...(Gridview 里面我用dropdownlist 来control status)
如果status = Approved then 我要扣 employee 里面的 Leavebalance
以下是我的code...现在我面对的问题是,我update status = Approved过后,我的employee table里面
的leavebalance 没有改变。。。我还用了label2, label3, label4 来test我的value...
我怀疑是我bold起来的那行code有问题。当我把那行的leaveId 换成 123(我的leave table 里面的leaveID)label 3 和label 4 都有正确的value...如果没换成123, 就有问题了。。。
There is no row at position 0.
Line 66: Label2.Text = LeaveBal
Line 67: Label3.Text = ds1.tables(0).rows(0).Item("LeaveBal")
Line 68: Label4.Text = ds1.tables(0).rows(0).Item("NumOfDay")
Line 69: LeaveBal = Label3.Text - Label4.Text
为什么会这样呢?
Protected Sub GridView2_RowUpdated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdatedEventArgs) Handles GridView2.RowUpdated
Dim empId As Integer
Dim LeaveId As Integer
For Each row As GridViewRow In GridView1.Rows
LeaveId = GridView2.DataKeys(row.RowIndex).Value
Next
Dim sqlRetrieve1 As String = "SELECT Leave.LeaveID, Leave.EmpID,Leave.Status, Leave.NumOfDay, Employee.LeaveBal FROM Leave INNER JOIN Employee ON Leave.EmpID = Employee.EmpID WHERE LeaveID [email==@LeaveID]=@LeaveID[/email]"
Dim da1 As New SqlDataAdapter(sqlRetrieve1, cn)
da1.SelectCommand.Parameters.Add("@LeaveID", Data.SqlDbType.Int).Value = LeaveId
Dim ds1 = New DataSet()
da1.Fill(ds1)
Dim LeaveBal As Integer
If ds1.Tables(0).rows.Count > 0 Then
For i As Integer = 0 To ds1.Tables(0).Rows.Count - 1
If ds1.tables(0).rows(0).Item("Status") = "Approved" Then
LeaveBal = ds1.tables(0).rows(0).Item("LeaveBal") - ds1.tables(0).rows(0).Item("NumOfDay")
End If
Next i
End If
Label2.Text = LeaveBal
Label3.Text = ds1.tables(0).rows(0).Item("LeaveBal")
Label4.Text = ds1.tables(0).rows(0).Item("NumOfDay")
Dim sql As String = "UPDATE Employee SET LeaveBal = @LeaveBal WHERE (EmpID = @EmpID)"
cn.Open()
Dim cmd As New SqlCommand(sql, cn)
cmd.Parameters.Add("@EmpID", Data.SqlDbType.Int, 20).Value = empId
cmd.Parameters.Add("@LeaveBal", Data.SqlDbType.Int, 20).Value = LeaveBal
cmd.Prepare()
cmd.ExecuteNonQuery()
cn.Close()
End Sub |
|
|
|
|
|
|
|
|
|
|
发表于 6-3-2008 01:18 AM
|
显示全部楼层
如果不是换成 123,那么你的资料库里有这个 data 吗?
你可以自己试试看在资料库里运行:
SELECT Leave.LeaveID, Leave.EmpID,Leave.Status, Leave.NumOfDay, Employee.LeaveBal FROM Leave INNER JOIN Employee ON Leave.EmpID = Employee.EmpID WHERE LeaveID = ‘别的ID’ |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 19-3-2008 02:15 AM
|
显示全部楼层
|
|
|
|
|
|
|
|
| |
本周最热论坛帖子
|