我在后台创建了一个Datagrid,其中一模板列为DropDownList,始终不能绑定数据,代码如下,各位大哥,帮我看看
//建立第2个模板列 
TemplateColumn   tm2=new   TemplateColumn(); 
tm2.ItemTemplate=new   ColumnTemplate2(); 
tm2.HeaderText="货位"; 
MyDataGrid.Columns.Add(tm2); 
////////////////
public   class   ColumnTemplate2   :   ITemplate 

public   void   InstantiateIn(Control   container)               

DropDownList   ddl=new   DropDownList(); 
ddl.ID="ddl_storage"; 
ddl.DataBinding+=new EventHandler(this.ddl_DataBinding);
container.Controls.Add(ddl); 

DropDownList ddl=new DropDownList();
ddl.DataTextField ="storage_Name";
ddl.DataValueField ="storage_ID";
ddl.DataSource =common.getstoragelist();
ddl.DataBind();
ddl.Items.Insert(0,new ListItem("请选择货位","0")); 
显示的时候有下拉框,就是没有数据.

解决方案 »

  1.   

    DropDownList   ddl定义在函数外面,要不然就释放了,ddl.DataBind(); 放到最后就好了
      

  2.   


    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;/// <summary>
    /// Summary description for AddGridViewTempletColumn
    /// </summary>
    public class AddGridViewTempletColumn : ITemplate
    {
        ListItemType _templateType;
        string _columnName;    public AddGridViewTempletColumn(ListItemType type, string colname)
        {
            _templateType = type;
            _columnName = colname;
    }    public void InstantiateIn(System.Web.UI.Control container)
        {
            switch (_templateType)
            {
                case ListItemType.Header:
                    DropDownList dd = new DropDownList();
                    dd.ID = _columnName;
                    container.Controls.Add(dd);
                    break;
                default:
                    break;
            }
        }
    }