protected void Page_Load(object sender, EventArgs e)
    {
       SetStatus();//初始化下拉框
    } public void SetStatus()
    {
        PublicTool pt = new PublicTool();        pt.SetDDlValue("SalMakeStatus", "Asc", false, ddlFStatus);               //记录状态
        this.ddlFStatus.SelectedValue = "2";    }
另外一个页面的代码如下:public class PublicTool : PageKey
{
    DAC DAC1 = new DAC();                                                      //数据库操作类对象
    DHCommon DHCommon1 = new DHCommon();                                       //公共操作对象
    KISSError errReturn = null;
    public PublicTool()
    {
        //
        //TODO: 在此处添加构造函数逻辑
        //
    }
    /// <summary>
    /// 绑定下拉列表
    /// </summary>
    /// <param name="ddSeq"></param>
    /// <param name="Sort"></param>
    /// <param name="IsSys"></param>
    /// <param name="ddl"></param>
    public void SetDDlValue(string ddSeq, string Sort, bool IsSys, DropDownList ddl)
    {
        KISSError ERRrETURN;
        DataSet ds = new DataSet();
        ERRrETURN = DHCommon1.GetCodeDetail(ddSeq, Sort, IsSys, ref ds);
        if (ERRrETURN != KISSError.KISS_OK)
        {
            TransErr(ERRrETURN);
        }
        else
        {
            ddl.DataSource = ds;
            ddl.DataValueField = "Fcode";
            ddl.DataTextField = "FDDLText";
            ddl.DataBind();
        }
    }
另外一个页面 如下:
public KISSError GetCodeDetail(string strField,string strSort,bool IsSys, ref DataSet ds)
    {
        KISSError errReturn = KISSError.KISS_OK;                         //统一错误处理对象 初始化时标志没有错误        string[,] strParmater = new string[3, 4]
                 { 
                    { "chrFieldValue",       "input",   strField,    "NVarChar" },
                    { "chrSort",            "input",    strSort,    "NVarChar" },
                    { "curStatus",          "output",   "",          "Cursor"   }
                 };        //
        //*****************************************************************************        OracleParameter[] parms = this.getParameter(strParmater);
        //执行存储过程返回有2个表数据集。表1-当前页显示的数据,表2-所有数据记录数
        if(!IsSys)
            errReturn = DAC1.GetDSet(CommandType.StoredProcedure, "PKG_Common.PROC_GetSysCodeDetail", ref ds, parms);
        else
            errReturn = DAC1.GetDSet(CommandType.StoredProcedure, "PKG_Common.PROC_GetCodeDetail", ref ds, parms);
        //判断有没有错误 
        return errReturn;
    }
数据库操作类 如下:
public class DAC
{
    /// <summary>
    /// 数据库连接字符串变量
    /// </summary>
    private string strConnectionStr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
    /// <summary>
    /// 数据库连接类变量
    /// </summary>
    private OracleConnection oracleConn = null;
    /// <summary>
    /// 数据库执行命令类变量
    /// </summary>
    private OracleCommand oracleCmd = null;
    /// <summary>
    /// 构造函数    /// </summary>
    public DAC()
    {
        try
        {
            //判断连接是否存在,如果不存在则新建一个Connection
            if (oracleConn == null)
            {
                oracleConn = new OracleConnection(strConnectionStr);
            }
        }
        catch
        {
            throw new Exception("数据库未正常连接!");
        }
    }另一个页面
public class DHCommon

    DAC DAC1 = new DAC(); 
    public DHCommon()
{
            
}
}
另一个页面 如下
public class PageKey : System.Web.UI.Page
{
    DHCommon DHCommon1 = new DHCommon();
    public PageKey()
    {
        //
        //TODO: 在此处添加构造函数逻辑
        //
        //string IsSessionError = Application["IsSessionError"] == null ? "" : Application["IsSessionError"].ToString();
        //if (IsSessionError == "true")
        //    Response.Redirect("/kiss/SessionError.html");
    }
    /// <summary>
    /// 添加存储过程参数
    /// </summary>
    /// <param name="strParmater">参数数组</param>
    /// <returns></returns>
     public OracleParameter[] getParameter(string[,] strParmater)
     {
         OracleParameter[] parms = new OracleParameter[strParmater.GetLength(0)]; //存储过程参数列表         for (int i = 0; i < strParmater.GetLength(0); i++)
         {
             parms[i] = new OracleParameter();
             parms[i].ParameterName = strParmater[i, 0];             if (strParmater[i, 1] == "input")
                 parms[i].Direction = ParameterDirection.Input;
             else if (strParmater[i, 1] == "output")
             {
                 parms[i].Direction = ParameterDirection.Output;
             }
             else if (strParmater[i, 1] == "inputoutput")
             {
                 parms[i].Direction = ParameterDirection.InputOutput;
                 //create by cenlo 设置参数长度
                 parms[i].Size=1024;
                 //end
             }
             else
             {
                 parms[i].Direction = ParameterDirection.ReturnValue;
             }
                            if (strParmater[i, 2] == "")
             {
                 parms[i].Value = DBNull.Value;
             }
             else
             {
                 if (strParmater[i, 3] == "Number")
                     parms[i].Value = Int64.Parse(strParmater[i, 2]);
                 else
                 {
                     string parmStr=strParmater[i, 2];
                     
                     //if (parmStr != "")
                     //{
                     //    if (parmStr.Contains('\''))
                     //    {
                     //        parmStr = parmStr.Replace("'", "''");
                     //    }
                     //    parmStr = parmStr.Trim();
                     //}
                     parms[i].Value = parmStr;
                     //parms[i].Value = parmStr.Trim(',');
                     //parms[i].Value = strParmater[i, 2].Trim().Trim(',').Trim('\'').Trim('"').Trim('/');
                 }
             }             if (strParmater[i, 3] == "NChar")
                 parms[i].OracleType = OracleType.NChar;
             else if (strParmater[i, 3] == "NVarChar")
                 parms[i].OracleType = OracleType.NVarChar;
             else if (strParmater[i, 3] == "Number")
                 parms[i].OracleType = OracleType.Number;
             else if (strParmater[i, 3] == "Cursor")
                 parms[i].OracleType = OracleType.Cursor;             //add by xmy 2008/6/3 
             else if (strParmater[i, 3] == "VarChar")
                 parms[i].OracleType = OracleType.VarChar;
             //add by xmy 2008/6/3 设置输入输出参数的长度             if (strParmater.GetLength(1)==5)
             {
                 if (strParmater[i, 1] == "inputoutput")
                 {
                     parms[i].Size =int.Parse(strParmater[i, 4]);
                 }
             }
             //add by xmy 2008/6/3 设置输入输出参数的长度         }
         return parms;
     }  /// <summary>
    /// 通过调用存储过程获得DataSet
    /// </summary>
    /// <param name="strProcudureName">存储过程名称</param>
    /// <param name="oracleparam">存储过程需要的参数</param>
    /// <returns>数据集</returns>
    public KISSError GetDSet(CommandType cmdType, string strProcudureName, ref DataSet ds, params OracleParameter[] oracleparam)
    {
        KISSError errReturn = KISSError.KISS_OK;                                 //统一错误处理对象 初始化时标志没有错误        try
        {
            oracleCmd = new OracleCommand();
            oracleCmd.Connection = oracleConn;
            OpenConn();
            oracleCmd.CommandText = strProcudureName;
            oracleCmd.CommandType = cmdType;            ds = new DataSet();
            if (oracleparam != null)
            {
                foreach (OracleParameter parm in oracleparam)
                    oracleCmd.Parameters.Add(parm);
            }            OracleDataAdapter oracleAdp = new OracleDataAdapter();
            oracleAdp.SelectCommand = oracleCmd;
            oracleAdp.Fill(ds);
        }
        catch (Exception ex)
        {
            errReturn = new KISSError();
            errReturn.ErrorLevel = SysEnums.KISSErrorLevel.SystemError;   //系统错误
            errReturn.ModuleName = ex.GetType().FullName;
            errReturn.MethodName = ex.TargetSite.ToString();
            errReturn.UserErrMsg = ex.Message;
            //throw new Exception(ex.GetType().ToString() + ex.Message);        }
        finally
        {
            oracleConn.Close();
        }        return errReturn;
        //return ds;
    }

解决方案 »

  1.   

    就是在这里啊:/// <summary>
      /// 绑定下拉列表
      /// </summary>
      /// <param name="ddSeq"></param>
      /// <param name="Sort"></param>
      /// <param name="IsSys"></param>
      /// <param name="ddl"></param>
      public void SetDDlValue(string ddSeq, string Sort, bool IsSys, DropDownList ddl)
      {
      KISSError ERRrETURN;
      DataSet ds = new DataSet();
      ERRrETURN = DHCommon1.GetCodeDetail(ddSeq, Sort, IsSys, ref ds);
      if (ERRrETURN != KISSError.KISS_OK)
      {
      TransErr(ERRrETURN);
      }
      else
      {
      ddl.DataSource = ds;
      ddl.DataValueField = "Fcode";
      ddl.DataTextField = "FDDLText";
      ddl.DataBind();
      }
      }
      

  2.   

    ddl.DataSource = ds; 
      ddl.DataValueField = "Fcode";
      ddl.DataTextField = "FDDLText";
      ddl.DataBind();
    这就是关键代码
      

  3.   

    ddl.DataSource = ds;
      ddl.DataValueField = "Fcode";
      ddl.DataTextField = "FDDLText";
      ddl.DataBind();
    绑定在这里!
      

  4.   

    我也没看见DS中有半点查询语句啊  
    都不知道 这个下拉列表怎么绑定出来的3个值:空格,L-未指定,3-锁定
    这3个绑定在DropDownList中的值 是从
    ddl.DataSource = ds;
    ddl.DataValueField = "Fcode";
    ddl.DataTextField = "FDDLText";
    ddl.DataBind();
    的哪个里边查询出来的?
      

  5.   

    我也没看见DS中有半点查询语句啊   
    都不知道 这个下拉列表怎么绑定出来的3个值:空格,L-未指定,3-锁定
    这3个绑定在DropDownList中的值 是从
    ddl.DataSource = ds;
    ddl.DataValueField = "Fcode";
    ddl.DataTextField = "FDDLText";
    ddl.DataBind();
    的哪个里边查询出来的?
      

  6.   

    DataSet ds = new DataSet();
    ERRrETURN = DHCommon1.GetCodeDetail(ddSeq, Sort, IsSys, ref ds);
    主要是ref dataset 
      

  7.   

    给ds赋值是在这里  try
      {
      oracleCmd = new OracleCommand();
      oracleCmd.Connection = oracleConn;
      OpenConn();
      oracleCmd.CommandText = strProcudureName;
      oracleCmd.CommandType = cmdType;  ds = new DataSet();
      if (oracleparam != null)
      {
      foreach (OracleParameter parm in oracleparam)
      oracleCmd.Parameters.Add(parm);
      }  OracleDataAdapter oracleAdp = new OracleDataAdapter();
      oracleAdp.SelectCommand = oracleCmd;
      oracleAdp.Fill(ds);
      }
    因为使用了ref
    Ref指明了方法中使用的是引用型参数,引用型参数不开辟新的内存区域。当利用引用型参数向方法传递形参时,编译程序将把实际值在内存中的地址传递该方法。引用型参数通常已经初始化。  
      

  8.   

    我已经查出来 改DropDownList的值来自Oracle数据库的pkg_common.proc_getsyscodedetail
     这个存储过程能看得到里面的代码?这个是里面的描述
    begin
      -- Call the procedure
      pkg_common.proc_getsyscodedetail(chrfieldvalue => :chrfieldvalue,
                                       chrsort => :chrsort,
                                       curstatus => :curstatus);
    end;这个存数过程 怎么显示结果 比如SQL Server 2005中的按F10 什么的~~~
      

  9.   

    谢谢各位大虾,在你们的帮助下 ,我快速找出了原因!!Thanks。