#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)