0

我有一年的下拉列表,这是动态的。我已经使用对象数据源填充了下拉列表。在插入 listview 控件时它工作正常。但是当我单击编辑按钮时,应该设置来自数据库的下拉列表值。例如,如果我有一行包含 Year=2006 和 month="Jan" 然后点击编辑按钮,这些下拉列表应该被填满。

我已经在 ItemDataBound 中编写了代码来设置 dropdownlilst 的值。但是当我使用 findcontrol 时,它取 null 所以对象引用错误即将到来。所以请给我解决方案。

谢谢

萨米尔

4

2 回答 2

2
 protected void MyListView_ItemDataBound(object sender, ListViewItemEventArgs e)
 {
     if (e.Item.ItemType == ListViewItemType.DataItem)
     {
          DropDownList ddl = (DropDownList)e.Item.FindControl("nameOfDDLOnAspxPage");
          ddl.SelectValue = (however you are getting the year data for this row);
     }
 }
于 2010-04-01T13:20:30.683 回答
1

我写了下面的代码

受保护的无效ListView_Articles_ItemDataBound(对象发件人,ListViewItemEventArgs e){

        if (e.Item.ItemType == ListViewItemType.DataItem)
        {
            if (cmd == "edit")
            {
                // Display the e-mail address in italics.
                int month, year;
                month = Convert.ToDateTime(DataBinder.Eval(((ListViewDataItem)e.Item).DataItem,"Created")).Month;
                year = Convert.ToDateTime(DataBinder.Eval(((ListViewDataItem)e.Item).DataItem, "Created")).Year;
                ListViewDataItem item = (ListViewDataItem)e.Item;

                DropDownList ddlmonth = (DropDownList)e.Item.FindControl("ddlmonth");
                DropDownList ddlyear = (DropDownList)e.Item.FindControl("ddlyear");
                ListItem lstitem = ddlyear.Items.FindByValue(year.ToString()); 

// 我发现 ddlyear 是 null 所以它无法绑定数据。

if (ddlmonth != null)
                {
                    foreach (ListItem monthitem in ddlmonth.Items)
                    {
                        if (int.Parse(monthitem.Value) == month)
                        {
                            ddlmonth.ClearSelection();
                            monthitem.Selected = true;
                            return;
                        }
                    }
                }
                if (ddlyear != null)
                {
                    foreach (ListItem yearitem in ddlyear.Items)
                   {
                       if (int.Parse(yearitem.Value) == year)
                        {
                           ddlyear.ClearSelection();
                            yearitem.Selected = true;
                            return;
                        }
                    }
                }
            }

        }


    }
于 2010-04-02T04:30:47.267 回答