为什么ascx里的DropDownList绑定不了数据,而同样的代码在aspx里可以显示数据
我把 ascx.cs单独编译成ascx.cs.dll在另外一个站点DropDownList也可以显示数据
这是为什么。怎么解决?

解决方案 »

  1.   

    不可能是路径问题 我在vs里。我调用ascx的那页能显示下拉筐里面就是没数据。
    如果把DropDownList写到aspx里就可以显示
      

  2.   

    这是 model_id.ascx.cs 其中SQLNameSpaceC封装了连接数据库的类
    namespace WebApplication1
    {
    using SQLNameSpaceC;//封装了连接数据库的类
    using System;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls; /// <summary>
    /// model_id1 的摘要说明。
    /// </summary>
      public class model_id1 : System.Web.UI.UserControl
    {
    public System.Web.UI.WebControls.DropDownList model_id;
    public System.Web.UI.WebControls.TextBox asc_cd;
    public System.Web.UI.WebControls.ImageButton btnCounter;
    public System.Web.UI.WebControls.TextBox start_dt;
    public System.Web.UI.WebControls.TextBox end_dt;
    public System.Web.UI.WebControls.TextBox bill_start_dt;
    public System.Web.UI.WebControls.TextBox bill_end_dt;

    public delegate void ClickEventHandler(object sender, System.Web.UI.ImageClickEventArgs e); public  SQLClassC mod=new SQLClassC();
    public event ClickEventHandler Click;
        protected void OnClick(System.Web.UI.ImageClickEventArgs e) 
    {
     if (Click!=null) Click(this, e); 
    }
       
    private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    if (!Page.IsPostBack)
    {


    mod.SQL="select model_id from model_mst";
    this.model_id.DataSource=mod.Populate();
     model_id.DataTextField="model_id";
        model_id.DataValueField="model_id";
       model_id.DataBind();
       model_id.Items.Insert(0,new ListItem("",""));
    if ((string)Session["SS_ASC_CD"]!=(string)Session["SS_CENTER"])
    {
    //return "<input name='ASC_CD' type='text' class='CReadOnly' size='10' value='"+Session["SS_ASC_CD"]+"' readonly>";

    asc_cd.CssClass="CReadOnly";
    asc_cd.Text=(string)Session["SS_ASC_CD"];
    }
    else
    {
    //return "<input name='ASC_CD' type='text' class='CInput' size='10' value='' >";
    asc_cd.CssClass="CInput";
    asc_cd.Text="";
    }
     
    /*foreach (ListItem li in model_id.Items)
    {
    if (li.Value.ToString() == "")
    {
    li.Selected = true;
    }
    }*/
    }
    } #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器
    /// 修改此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {
    this.btnCounter.Click += new System.Web.UI.ImageClickEventHandler(this.btnCounter_Click);
    this.model_id.SelectedIndexChanged += new System.EventHandler(this.model_id_SelectedIndexChanged); }
    #endregion private void btnCounter_Click(object sender, System.Web.UI.ImageClickEventArgs e)
    {
    this.OnClick(e);
    } private void model_id_SelectedIndexChanged(object sender, System.EventArgs e)
    {

    }
    }
    }
    test.aspx调了 上面的用户控件。并写了DropDownList model_id可以显示绑定的数据。
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using SQLNameSpaceC;namespace asit
    {
    /// <summary>
    /// test 的摘要说明。
    /// </summary>
    public class test : System.Web.UI.Page
    {
    protected System.Web.UI.WebControls.DropDownList model_id;

    private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    SQLClassC conn=new SQLClassC();
    conn.SQL="select model_id from model_mst ";
    model_id.DataSource=conn.Populate();
    model_id.DataTextField="model_id";
    model_id.DataValueField="model_id";
    model_id.DataBind();

    } #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.model_id.SelectedIndexChanged += new System.EventHandler(this.model_id_SelectedIndexChanged);
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion private void model_id_SelectedIndexChanged(object sender, System.EventArgs e)
    {

    }
    }
    }
    这两个文件都是用同一个SQLNameSpaceC来连数据库。用户空间就不行显示不了数据 sql server跟踪里也没用户控件连接数据库的记录。
      

  3.   

    让test.aspx里只有ascx,没有其他任何控件和代码。试试!
      

  4.   

    最早就是没有其他任何控件和代码的,后来发现 .DropDownList 里没数据,就怀疑是SQLNameSpaceC封装了连接数据库的类有问题所以在 test.aspx里加了.DropDownList  用SQLNameSpaceC绑定显示出数据。用户控件却没有显示数据。有一点可以肯定 用户控件的DropDownList 就没有读取数据库。求求大家想个办法解决!!!!!!!!!!!!
      

  5.   

    我的可以啊!
    if(!IsPostBack)
    {
    DataTable dTable;
    DataRow dRow;
    dTable = new DataTable();
    dTable.Columns.Add("id");
    dTable.Columns.Add("name");
    for(int i=0;i<5;i++)
    {
    dRow =dTable.NewRow();
    dRow["id"]=i;
    dRow["name"]="a"+i.ToString();
    dTable.Rows.Add(dRow);
    }
    DropDownList1.DataSource=dTable;
    DropDownList1.DataTextField="name";
    DropDownList1.DataValueField="id";
    DropDownList1.DataBind();
    DropDownList1.Items.Insert(0,new ListItem("",""));
    }
      

  6.   

    to q_po_o;没有反应。是不是要重新生成解决方案。很可能是vs哪里设置不对。我是用f5执行。可能不是程序本身的问题。因为我单独把model_id.ascx.cs 做成dll能用