我在formview中有一个多视图:
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:FormView ID="fvSpec" runat="server" DataKeyNames="ID" OnItemUpdating="fvSpec_ItemUpdating"
OnItemInserting="fvSpec_ItemInserting" OnModeChanging="fvSpec_ModeChanging">
<EditItemTemplate>
<asp:MultiView ID="MultiView1" runat="server" ActiveViewIndex="0">
<asp:View ID="View1" runat="server">
<asp:DropDownList ID="ddlEditProdType" runat="server" SelectedValue='<%# Bind("CommonID") %>'></asp:DropDownList>
切换到编辑模式时,需要绑定下拉列表:
protected void fvSpec_ModeChanging(object sender, FormViewModeEventArgs e)
{
int tableID = int.Parse(ddlItems.SelectedValue);
switch (e.NewMode)
{
case FormViewMode.Edit:
fvSpec.ChangeMode(FormViewMode.Edit);
FillEditLists();
BindFormView(tableID);
}
}
private void FillEditLists()
{
MultiView MultiView1 = (MultiView)fvSpec.FindControl("MultiView1");
View View1 = (View)MultiView1.FindControl("View1");
//ddlEditProdType COMES BACK NULL
DropDownList ddlEditProdType = (DropDownList)View1.FindControl("ddlEditProdType");
//bind ddl here
}
发现formview控件很好
发现多视图控件很好
发现视图控件很好
但是当执行下拉列表行时,它会返回NULL
(对象引用错误)
赞赏任何意见。
答案 0 :(得分:0)
你有没有试过这样的事情:
private Control FindControlRecursive(Control root, string id)
{
if (root.ID == id)
{
return root;
}
foreach (Control c in root.Controls)
{
Control t = FindControlRecursive(c, id);
if (t != null)
{
return t;
}
}
return null;
}
来自this CodingHorror article。我有点惊讶我们在.NET 4.0上,微软还没有构建这样的东西......我经常使用它。
答案 1 :(得分:0)
找出为什么找不到控件
需要首先绑定formview,然后找到某个控件。
BindFormView(tableID);
FillEditLists();