我的页面上有两个 DropDownList 控件,一个是用来选年份(YearList),一个是用来选公司名(CompanyList),YearList是用 For 循环添加 Item的,CompanyList是用数据库的绑定。
问题是:YearList 可以取到选取的Item的Text,而CompanyList却取不到值,但是我把关于CompanyList的那段代码,单独取出来运行,他就可以取到值了。 为什么?为什么?可能是哪里的问题呢?各位指点一下,在线等!急!~~~~~~~~~~~~~~

解决方案 »

  1.   

    上面说漏了,CompanyList不是取不到值,而是不管我选的是哪个 Item ,啊每次返回的都是 Item(0)的值,
      

  2.   

    重点介绍如何在安装包中自动为客户创建数据库 步骤: 
    1、添加一个新项目->选择类库模板->命名为DBCustomAction 
    2、单击项目右键->添加新项->选择安装程序类(命名为DBCustomAction.cs) 
    3、在服务器资源管理器中添加->连接到数据库->指定用户密码(选择允许保存密码)->数据库选择master 
    4、切换到DBCustomAction.cs的视图状态->将服务器资源管理器数据库连接中的master.dbo拖动到designer中 
    5、添加一个新项sql.txt(注意要使用小写),输入下列sql代码 
    CREATE TABLE [dbo].[MK_Employees] ( 
    [Name] [char] (30) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , 
    [Rsvp] [int] NULL , 
    [Requests] [nvarchar] (4000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL  
    ) ON [PRIMARY]; ALTER TABLE [dbo].[MK_Employees] WITH NOCHECK ADD  
    CONSTRAINT [PK_MK_Employees] PRIMARY KEY CLUSTERED  

    [Name] 
    ) ON [PRIMARY]; 
    (P.S:也可以直接用SqlServer导出) 6、在sql.txt的右键属性中->生成操作->嵌入的资源 
    7、将DBCustomAction.cs切换到代码视图,添加下列代码 
    private  string GetSql(string Name) 
          { 
             try 
             { 
                Assembly Asm = Assembly.GetExecutingAssembly(); 
                Stream strm = Asm.GetManifestResourceStream(Asm.GetName().Name + "."+Name); 
                StreamReader reader = new StreamReader(strm); 
                return reader.ReadToEnd(); 
             } 
             catch (Exception ex) 
             { 
                Console.Write("In GetSql:"+ex.Message); 
                throw ex; 
             } 
          }       private void ExecuteSql(string DataBaseName,string Sql) 
          { 
             System.Data.SqlClient.SqlCommand Command = new System.Data.SqlClient.SqlCommand(Sql,sqlConnection1);          Command.Connection.Open(); 
             Command.Connection.ChangeDatabase(DataBaseName); 
             try 
             { 
                Command.ExecuteNonQuery(); 
             } 
             finally 
             { 
                Command.Connection.Close(); 
             } 
          } 
          protected void AddDBTable(string strDBName) 
          { 
             try 
             { 
                ExecuteSql("master","CREATE DATABASE "+ strDBName); 
                ExecuteSql(strDBName,GetSql("sql.txt")); 
             } 
             catch(Exception ex) 
             { 
                   Console.Write("In exception handler :"+ex.Message); 
             } 
          }       public override void Install(System.Collections.IDictionary stateSaver) 
          { 
              base.Install(stateSaver); 
                 AddDBTable(this.Context.Parameters["dbname"]); 
          } 
    8、再添加一个新项目,(选择添加到解决方案中)->项目类型为安装项目->命名为DBCustomAction Installer 
    9、选择应用程序文件夹->添加->项目输出->主输出 
    10、在方案资源管理器中->右键安装项目(DBCustomAction Installer)->视图->用户界面 
    11、选中启动结点->添加对话框->文本A 
    12、选动文本框A->右键->上移一直到最顶端 
    13、选择文本框A属性->修改BannerText,(Specify Database Name) 
    14、修改BodyText(This dialog allows you to specify the name of the database to be created on the database server. ) 
    15、修改EditLabel1(Name of DB),修改Edit1Porperty(CUSTOMTEXTA1),将其他Edit2,3,4的Edit(2,3,4)Visible属性设为false; 
    16、在方案资源管理器中->右键安装项目(DBCustomAction Installer)->视图->自定义操作 
    17、选中安装结点->添加->双击应用程序文件夹->主输出来自DBCustomAction(活动)->右键属性->CustomActiveData属性修改为/dbname=[CUSTOMTEXTA1] 
    18、编译生成,OK!
      

  3.   

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vsintro7/html/vxwlkWalkthroughUsingCustomActionToCreateDatabaseDuringInstallation.asp
      

  4.   

    CompanyList是不是没有id, 也就是说没有找到这个DropDownList控件
      

  5.   

    我是放在 not page.ispostback 中的啊,autopostback的值我也没有设啊
      

  6.   

    DropDownList控件连接数据库的时候你是不是忘了绑定啊?还有DropDownList的属性AutoPostback不要设置为true,在Page_Load中添加如下:
    if(!IsPostBack)
    {
        BindDropDownList();
    )private void BindDropDownList()
    {cn=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath(ConfigurationSettings.AppSettings["ds"]));
    string strSQL="select * from material,storage where material.storage_num=storage.storage_num and m_num="+list1.SelectedItem.Value+" order by m_num";
    da=new OleDbDataAdapter(strSQL,cn);
    ds=new DataSet();
    cn.Open();
    da.Fill(ds);
    DataGrid1.DataSource=ds;
    DataGrid1.DataBind();//你看一些你是不是少了这么一句话。
    cn.Close();
    }
      

  7.   

    我曾经遇到过你这种情况:
    原因是你再帮定dropdownlist时,没有给dropdownlist榜定value值,你看一下dropdownlist控件,他有两个值:一个是ddl.selecteditem.text,一个是ddl.selecteditem.value,榜定时可分别赋值,for example:
    ddl.datasource = dataset1;
    ddl.datavaluefield="id";(该字段不显示)
    ddl.datatextfield="name";(该字段显示)
    ddl.databind();
    另外,当你这样帮定时,如果两个item的value值一样的话,也会出现你所说的那种情况,比如说数据库里有两个字段:部门(dept)、姓名(name);当你将上述两个字段帮定到ddl时,如果两个人的部门相同,不管你选择那个人,ddl取到的总是第一个人的text,即item[0].text
      

  8.   

    我的代码是:
                    <asp:dropdownlist  ID="ACompany" runat="server"
    DataValueField="depat"
    DataTextField="depat"  >
           </asp:dropdownlist> sub DownListBind()
       Dim objConn As OleDbConnection
          Dim objCmd As OleDbDataAdapter
          Dim objDS As DataSet
          Dim strSQL  As String
                  strSQL = "select depat from buMen"
                objConn=ConnectDb()
         objCmd = New OleDbDataAdapter()
                     objCmd.TableMappings.Add("Table", "book2")
           objCmd.SelectCommand = New OleDbCommand(strSQL, objConn)
           objDS = New DataSet("book2")
           objCmd.Fill(objDS)
           ACompany.DataSource = objDS.Tables("book2").DefaultView
           ACompany.DataBind()
       ObjConn.close
       ObjCmd.selectCommand.connection.close
    end sub这样有问题吗?
      

  9.   

    用C#   Request.From["id"].Tostring();
      

  10.   

    上面说漏了,CompanyList不是取不到值,而是不管我选的是哪个 Item ,啊每次返回的都是 Item(0)的值,
    这种情况一定是当你取值之前,你又重新绑定了CompanyList!
      

  11.   

    你是不是在page_load里面包含了DownListBind()
      

  12.   

    检查你的Dropdownlist中的value值是不是都一样。如果都是一样的,将会出现你说的那种情况:“CompanyList不是取不到值,而是不管我选的是哪个 Item ,啊每次返回的都是 Item(0)的值,”
      

  13.   

    就是看生成的select元素的option的值是不是都一样。
      

  14.   

    开玩笑,回复了这么多,只有两个人说的是对的回复人: wangsaokui(无间道) ( ) 信誉:100  2004-03-14 11:27:00  得分:0 autopostback=true回复人: PingJie(萍姐) ( ) 信誉:100  2004-03-14 11:59:00  得分:0 用C#   Request.From["id"].Tostring();
      

  15.   

    呵呵谢谢大家啊,问题已经解决了。你们所说的要注意的我都有了,问题就出在:
    <%@ Page Language="VB" ContentType="text/html" ResponseEncoding="gb2312" %>
    这是Dreamweaver 自动加上去的,我把 ResponseEncoding="gb2312" 去掉以后就一切正常了.
    有哪位知道这个是干什么的? 帮大家解释一下啊!~~~~~~~我也不知道这是什么,只是知道把那个去掉以后,我的问题就解决了