我正在尝试在GridView中填充一系列下拉列表。在RowDataBound事件中,我基于gridviewrow中的其他信息调用以获取用于填充行中下拉列表的项目。我在以下代码中收到“ORA-01036:参数上的非法变量名称/数字错误”。
Dim rowTemp As GridViewRow = ddlItemDesc.Parent.Parent
Dim lblYear As Label = rowTemp.FindControl("lblSchoolYear")
Dim strYear As String = lblYear.Text.Trim()
Dim strSelect As String = "SELECT FOO.BAR.PRODUCT_CODE || ' :: ' || FOO.BAR.PRODUCT_DESC AS txt, FOO.BAR.PRODUCT_KEY AS val, :currentYear AS CURRENT_YEAR FROM FOO.BAR WHERE (FOO.BAR.PRODUCT_KEY=:itemKey)"
Dim daTemp As New OracleDataAdapter(strSelect, oConn)
daTemp.SelectCommand.Parameters.Add("currentYear", CDate(strYear))
daTemp.SelectCommand.Parameters.Add("itemKey", strItemVal(0))
Dim dtProd As New DataTable
daTemp.Fill(dtProd)
如果我从SELECT语句中删除“:currentYear AS CURRENT_YEAR”,它运行正常。我在其他SELECT的连接中使用相同的语句,没有任何问题。
strYear来自gridviewrow中的一个标签,我检查过它有数据并且它对CDate有效(我也尝试过它只是一个字符串,结果相同)。 StrItemVal(0)来自另一个下拉列表(使用:currentYear传入成功填充的下拉列表)。如果该下拉列表中包含选定的值,则仅调用此代码。