2011-04-06 48 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)