добавить новый элемент в выпадающий список в datalist

#asp.net #drop-down-menu

#asp.net #выпадающее меню

Вопрос:

У меня есть Datalist, и я пытаюсь найти dropdown в datalist , чтобы добавить в него текст в первом индексе в 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;


    }
  

С уважением

Ответ №1:

Вы должны проверить событие ItemDataBound для datalist и посмотреть, имеет ли оно тип ListItemType.Элемент или ListItemType.AlternatingItem, в противном случае вы нажимаете нулевую ссылку, потому что вы находитесь в заголовке datalist:

в 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")); 
  

Ответ №2:

Возможно, вам просто нужны AppendDataBoundItems 🙂

Ответ №3:

Попробуйте это.

   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"));

     }

  }
  

Комментарии:

1. упс, это в значительной степени то, что говорит джон 🙂

Ответ №4:

Поместите свой код в приведенную ниже инструкцию if.

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

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

Вы получаете исключение null reference из-за заголовка строк нижнего колонтитула, поскольку этого выпадающего списка там нет.

Ответ №5:

Используйте это, это работает:

 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();
            }
}
  

Ответ №6:

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