2011-04-06 44 views
0

为DropDownList我有一个DataList,我试图找到在datalistdropdown在其文本中添加第一指数ddl我想这样做,但这个出现(object reference not set .... )添加新项数据列表

这里是我的代码:

private DropDownList DDLProduct; 
protected void Page_Load(object sender, EventArgs e) 
    { 


    } 
protected void DDlProduct_DataBound(object sender, EventArgs e) 
    { 
     DDLProduct.Items.Insert(0, new ListItem("Swithch Model", "0")); 
    } 
protected void DLProduct_ItemDataBound(object sender, DataListItemEventArgs e) 
    { 


     DDLProduct = e.Item.FindControl("DDlProduct") as DropDownList; 


    } 

问候

回答

0

试试这个。

protected void DLProduct_ItemDataBound(Object sender, DataListItemEventArgs e) 
    { 

    if (e.Item.ItemType == ListItemType.Item || 
     e.Item.ItemType == ListItemType.AlternatingItem) 
    { 

     private DropDownList DDLProduct = e.Item.FindControl("DDlProduct") as DropDownList; 
     DDLProduct.Items.Insert(0, new ListItem("Swithch Model", "0")); 

    } 

    } 
+0

哎呀它几乎什么jonh说:) – naveen 2011-04-06 13:50:48

0

把你的代码中下面的if语句。

if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { 

    // Your code goes here to find the drop down list.  
} 

由于页脚行的标题,您正在获得空引用异常,因为此下拉列表不存在。

1

您应该检查在DataList的ItemDataBound事件,看看它的类型是ListItemType.Item或ListItemType.AlternatingItem的,因为你是在数据列表的头,否则你打空引用:

在C#:

if ((e.item.ItemType == ListItemType.Item) | (e.item.itemType == ListItemType.AlternatingItem))

在VB.net

if (e.Item.ItemType = ListItemType.Item) OR (e.Item.ItemType = ListItemType.AlternatingItem) 

那么你一定要看看你在C#

:可以找到它

DropDownList d = (DropDownList) e.Item.FindControl("DDLProduct")

在vb.net

Dim d as DropDownList = CType(e.Item.FindControl("DDLProduct"), DropDownList)

一旦你找到了下拉列表框,你可以这样做:

d.Items.Insert(0, new ListItem("Switch Model", "0")); 
+0

+1很好的解释:) – naveen 2011-04-06 13:51:25

0

利用这一点,它的工作:

sQuery = "select * from tbl_Ticket_Msg where us_ID=0 and t_status='Open' order by T_id asc"; 
     ds3.Clear(); 
     ds3 = cl.getDataSet(sQuery); 
     if (ds3.Tables[0].Rows.Count > 0) 
     { 
      DataList1.DataSource = ds3.Tables[0]; 
      DataList1.DataBind(); 
      lbltotal.Text = "Total Messages : " + ds3.Tables[0].Rows.Count.ToString(); 

      int row = Convert.ToInt32(ds3.Tables[0].Rows.Count); 
      for (int i = 0; i < row; i++) 
      { 
       DropDownList ddl = (DropDownList)DataList1.Items[i].FindControl("DropDownList1"); 
       ddl.DataSource = BindServicetoddl(); 
       ddl.DataTextField = "name1"; 
       ddl.DataValueField = "us_ID"; 
       ddl.DataBind(); 
      } 
} 
-1
(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)