佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 910|回复: 2

各位大大请帮帮忙。。。(ASP.NET)

[复制链接]
发表于 5-3-2008 12:57 PM | 显示全部楼层 |阅读模式
小弟最近在做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
回复

使用道具 举报


ADVERTISEMENT

发表于 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 | 显示全部楼层
问题解决了。。。谢谢大家!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 2-1-2026 07:45 PM , Processed in 0.170862 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表