Jag vill i en av kolumnerna i en repeater infoga en imagebutton. Koden ser ut såhär;
----->vb-kod (code behind)
...
Dim dvVasteras As DataView
Dim dokImage As New ImageButton
Me.dokImage.ImageUrl = "images/doc.gif"
ds = objHuurre.hamtaAvvikelser("alla")
dvVasteras = New DataView(ds.Tables(0))
dvVasteras.RowFilter = "kontorNamn='västerås'"
repVisaAvvikelser1().DataSource = dvVasteras
...
-----> html-kod
...
<ItemTemplate>
<tr>
<td class="visaAvv"><asp:ImageButton id="dokImage" runat="server"></asp:ImageButton></td>
...
</tr>
</ItemTemplate>
...
Med den här lösningen får jag "Object reference not set to an instance of an object. ". Lägger jag däremot knappen utanför repeatern så fungerar det. Vad är det jag har glömt/gjort för fel?
JonMedlem sedan juli 20011 304 inlägg Hepp!
Jag antar att du vill ha olika nbilder för olika kontor typ? Annars är det ju bara att sätta ImageUrl direkt i propertyn på aspx-sidan.
Jag vet inte på rak arm varför det blir fel för dig men jag kan förklara hur jag gör liknande saker :)
Codebehind:
protected void databound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
{
if(e.Item.ItemType != ListItemType.Footer && e.Item.ItemType != ListItemType.Header)
{
// dokImage
Control _ctlpic = e.Item.FindControl("dokImage");
if(_ctlpic!=null)
{
System.Web.UI.WebControls.ImageButton _imgDok = (System.Web.UI.WebControls.ImageButton)_ctlpic;
_imgDok .ImageUrl = "bilder/getost.jpg";
}
}
}
Sen måste du ange på din aspx-sida att funktionen databound ska köras vid databindning, typ:
<asp:Repeater id="repVisaAvvikelser1" runat="server" OnItemDataBound="databound"></asp:Repeater>
JosefMedlem sedan mars 20023 561 inlägg TompusTuffing: Använd gärna [kod]-taggarna när du postar kod.
PrästenMedlem sedan dec. 2000537 inlägg Mmmm förstår mycket väl ditt problem....
Jag har helt lagt ner att sätta statiska webcontroller i Repeatrar, det blir helt enkelt för mycket tjafs och maffs.
Det funkar inte när man ska göra nåt avancerat.
Därför är dynamiskt satta webcontrolls att föredra...
Design:
<asp:Repeater id="Repeater1" runat="server">
<HeaderTemplate>
</HeaderTemplate>
<ItemTemplate>
</ItemTemplate>
<FooterTemplate>
</FooterTemplate>
</asp:Repeater>
CodeBeside:
private void Page_Load(object sender, System.EventArgs e)
{
ImageButton theimage=new ImageButton();
theimage.ID="dinbild";
//theimage.ImageUrl="http://www.ijiji.se/54.gif"; //sätt din bild direkt
Repeater1.Controls.Add(theimage);
}
((Image)Repeater1.FindControl("dinbild")).ImageUrl="http://www.ijijji.se/hh.gif"; // eller sätt den senare varsomhelst i din kod