Find ImageButton Control i repeater fejler
Hej,Jeg håber I kan hjælpe mig - jeg er nemlig ved at blive idiot af en simpel ting - jeg har gjort 1 million gange før.
Jeg har en repeater og i den har jeg en imagebutton. På imagebuttons OnClientClick event vil jeg så have tilføjet en tekst: "return confirm('Deleting continue?')"
Hvis jeg putter den på direkte i aspx filen - så har jeg ingen problemer. Men det kan jeg så ikke bruge, da jeg sådan set gerne vil bestemme min tekst i codebehind filen.
Nu forsøger jeg så at bruge OnItemDataBound med følgende:
protected void repCompanyToCompanyView_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
Ansi_WebConfigSettings config = new Ansi_WebConfigSettings();
Ansi_Resources resourcesAllPages = new Ansi_Resources();
string message = string.Empty;
if (resourcesAllPages.GetLanguageTextsForPage(Ansi_WebPageBase.SystemList.AnsiCrm.ToString(), "~/AnsiCrm_AllPages", config.ConfigCulture) == AnsiStatus.Success)
{
message = resourcesAllPages.GetMessageForPage("ReturnConfirmDelete");
if ((e.Item.ItemType == ListItemType.Item) || (e.Item.ItemType == ListItemType.AlternatingItem))
{
ImageButton ibtnDeleteRelationCompanyToCompany = (ImageButton)(repCompanyToCompanyView.FindControl("ibtnDeleteRelationCompanyToCompany"));
//ibtnDeleteRelationCompanyToCompany.OnClientClick = message;
ibtnDeleteRelationCompanyToCompany.OnClientClick = "return confirm('Deleting continue?')";
}
}
}
Den finder IKKE min ImageButton - men fejler så heller ikke. Den undlader bare at knytte teksten på (kan jeg se når jeg laver en vis kilde). Og det den så gør er at fucke mit layout fuldstændig ud af propertioner.
Så er gode råd dyre - men tanke var så at jeg måske loadede repeateren for sent, så jeg lavede mig en metode, som jeg smed på i PageLoad EFTER jeg havde bundet repeateren med data (og ja der er data i repeateren) på følgende måde:
private void GetResourceTextsOnPageAfterLoad()
{
Ansi_WebConfigSettings config = new Ansi_WebConfigSettings();
Ansi_Resources resourcesAllPages = new Ansi_Resources();
string message = string.Empty;
if (resourcesAllPages.GetLanguageTextsForPage(Ansi_WebPageBase.SystemList.AnsiCrm.ToString(), "~/AnsiCrm_AllPages", config.ConfigCulture) == AnsiStatus.Success)
{
message = resourcesAllPages.GetMessageForPage("ReturnConfirmDelete");
foreach (RepeaterItem item in repCompanyToCompanyView.Items)
{
if ((item.ItemType == ListItemType.Item) || (item.ItemType == ListItemType.AlternatingItem))
{
ImageButton ibtnDeleteRelationCompanyToCompany = (ImageButton)(repCompanyToCompanyView.FindControl("ibtnDeleteRelationCompanyToCompany"));
//ibtnDeleteRelationCompanyToCompany.OnClientClick = message;
ibtnDeleteRelationCompanyToCompany.OnClientClick = "return confirm('Deleting continue?')";
}
}
}
}
Bruger jeg ovennævnte får jeg en fejl: Object reference not set to an instance of an object når jeg forsøger at loade siden.
Og ja, nu aner jeg altså ikke hvad jeg kan prøve mere.
Her er den del af min repeater, hvor I kan se, at jeg har en ImageButton - ibtnDeleteRelationCompanyToCompany
<asp:Repeater ID="repCompanyToCompanyView" runat="server" OnItemCommand="repCompanyToCompanyView_ItemCommand" OnItemDataBound="repCompanyToCompanyView_ItemDataBound">
<HeaderTemplate>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td class="repHeaderBackground"></td>
<td class="repHeaderBackground"></td>
<td class="repHeaderBackground">
<asp:Label ID="lblComToComNameHeadline" runat="server" Text="Name"></asp:Label>
</td>
<td class="repHeaderBackground">
<asp:Label ID="lblComToComRelationTypeHeadline" runat="server" Text="Relation Type"></asp:Label>
</td>
<td class="repHeaderBackground">
<asp:Label ID="lblComToComCreateDate" runat="server" Text="Create Date"></asp:Label>
</td>
<td class="repHeaderBackground">
<asp:Label ID="lblComToComUpdateDate" runat="server" Text="Update Date"></asp:Label>
</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td class="repRow" style="vertical-align: middle; width: 10px">
<asp:ImageButton ID="ibtnDeleteRelationCompanyToCompany" runat="server" SkinID="delete" CommandArgument='<%# Eval("ORMId") %>' CommandName="DeleteRelationCompanyToCompany" />
</td>
Som sagt - så er jeg udgået for gode ideer - og håber en af jer, kan se fejlen, eller har en anden idé til jeg kan finde den forbistrede ImageButton i codebehind.
mvh
simsen :-)