我想要做的是在转发器内部的绑定和下拉列表,但我没有做到。我在标记的行中遇到以下错误:System.NullReferenceException。任何帮助都会得到满足。
后端:
protected void shoeRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
FixbayDBDataContext db = new FixbayDBDataContext();
var colors = from c in db.ColorTbls select new { ColorID = c.ColorID, ColorName = c.ColorName, };
DropDownList ddl = (DropDownList)e.Item.FindControl("colorList1");
ddl.DataSource = colors; //ERROR LINE
ddl.DataTextField = "ColorName";
ddl.DataValueField = "ColorName";
}
前端:
<ajaxToolkit:TabPanel ID="TabPanel5" runat="server">
<HeaderTemplate>Show Shoes</HeaderTemplate>
<ContentTemplate runat="server">
<asp:Repeater ID="shoeRepeater" OnItemCreated="shoeRepeater_ItemDataBound" runat="server">
<HeaderTemplate></HeaderTemplate>
<ItemTemplate>
<table border="1" style="border-color:#ff9900; width:400px; font-weight:bold; font-family:'Oswald', Arial, sans-serif;">
<tr>
<td rowspan="6" style="width:150px; height:150px;">
<image src="shoeImages/<%#DataBinder.Eval(Container.DataItem,"ImagePath") %>"></image>
</td>
</tr>
<tr>
<td>
<%#DataBinder.Eval(Container.DataItem,"BrandName") %> <%#DataBinder.Eval(Container.DataItem,"ModelName") %>
</td>
</tr>
<tr>
<td>
Price: $<%#DataBinder.Eval(Container.DataItem,"Price") %>
</td>
</tr>
<tr>
<td>
Size: <%#DataBinder.Eval(Container.DataItem,"Size") %>
</td>
</tr>
<tr>
<td>
<asp:DropDownList ID="colorList1" onchange="get(this)" runat="server">
</asp:DropDownList>
Color: <%#DataBinder.Eval(Container.DataItem,"PrimaryColor") %> - <%#DataBinder.Eval(Container.DataItem,"SecondaryColor") %>
</td>
</tr>
<tr>
<td>
Quantity: <%#DataBinder.Eval(Container.DataItem,"Quantity") %>
</td>
</tr>
</table>
</ItemTemplate>
<FooterTemplate></FooterTemplate>
</asp:Repeater>
</ContentTemplate>
</ajaxToolkit:TabPanel>
答案 0 :(得分:1)
您订阅了错误的活动:
OnItemCreated="shoeRepeater_ItemDataBound"
这应该是
OnItemDataBound="shoeRepeater_ItemDataBound"
答案 1 :(得分:1)
这是解决方案
protected void shoeRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
FixbayDBDataContext db = new FixbayDBDataContext();
var colors = from c in db.ColorTbls select new { ColorID = c.ColorID, ColorName = c.ColorName, };
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
DropDownList ddl = (DropDownList)e.Item.FindControl("colorList1");
ddl.DataSource = colors;//Or any other datasource.
ddl.DataTextField = "ColorName";
ddl.DataValueField = "ColorName";
ddl.DataBind();
}
}