我在将返回参数传递到第二个下拉列表时遇到问题。第二个列表完全取决于第一个列表的选择。我很确定SP没问题。同样,我的问题是传递价值。
存储过程
PROCEDURE ev_dropdown(
cur_out IN OUT eqpack.t_cur_out,
p_result OUT VARCHAR2,
p_reference_id IN NUMBER
)
IS
BEGIN
OPEN cur_out FOR
SELECT ev_id, ev
FROM event WHERE a_ref = p_reference_id;
EXCEPTION
WHEN OTHERS
THEN
p_result :=
'An error occurred in get_events_dropdown - ' || SQLERRM;
END ev_dropdown;
。CS
public void populateSpecificEv(int p)
{
DataTable dtRef = CreateReferenceDT();
string conn = GetConnectString();
using (OracleConnection connection = new OracleConnection(conn))
using (OracleCommand command = connection.CreateCommand())
{
command.CommandText = "eqpackage.get_events_dropdown";
command.CommandType = CommandType.StoredProcedure;
command.Parameters["p_reference_id"].Value = p;
OracleDataReader reader;
reader = command.ExecuteReader();
dtRef.Rows.Add("0", "-select-");
while (reader.Read())
{
dtRef.Rows.Add(reader[0], reader[1]);
}
connection.Open();
command.ExecuteNonQuery();
command.Connection.Close();
command.Connection.Dispose();
return dtRef; //Error -returns void, a return keyword must not be followed by an object expression
}
}
DataTable CreateReferenceDT()
{
DataTable dt = new DataTable();
dt.Columns.Add("id", typeof(int));
dt.Columns.Add("name", typeof(string));
return dt;
}
aspx.cs
protected void ddlSys_SelectedIndexChanged1(object sender, EventArgs e)
{
int p = int.Parse(ddlSystems.SelectedItem.Value);
dbase.populateSpecificEvent(p);
DataTable dt1 = dbase.PopulateEvDropDown();
ddlEv.DataSource = dt1;
ddlEv.DataTextField = "name";
ddlEv.DataValueField = "id";
ddlEv.DataBind();
}