Vis/skjul af en control
Jeg har en repeater, der viser et ord og ordets betydning, som henter fra sql-database. Det jeg vil gerne have, er at skjule betydninger, og kun når man klikker på ordet, bliver betydningen synligt:Min repeater:
...
...
<asp:Repeater ID="rpTermList" runat="server">
<ItemTemplate>
<b><asp:hyperlink ID="lblTerm" runat="server" Text='<%# Eval("Term") %>'></asp:hyperlink></b>
<ul>
<asp:literal ID="lblTermDefinition" runat="server" Text='<%# Eval("TermDefinition") %>'></asp:literal>
</ul>
</ItemTemplate>
</asp:Repeater>
...
...
og koden i codebehind:
---------------------
...
...
private void RegisterJavaScript()
{
string key = "jsToggle";
StringBuilder sb = new StringBuilder();
sb.Append("<script language=\"javascript\">");
sb.Append(" function toggle(what)");
sb.Append(" {");
sb.Append(" alert(what);");
sb.Append(" var oWhat = document.getElementById(what)");
sb.Append(" if (oWhat.style.display == 'none') {oWhat.style.display = ''} else {oWhat.style.display = 'none'}");
sb.Append(" }");
sb.Append("</script>");
if (!Page.IsClientScriptBlockRegistered(key))
{
Page.RegisterClientScriptBlock(key, sb.ToString());
}
}
...
...
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Guid g = Guid.NewGuid();
HyperLink lblTerm = (HyperLink)e.Item.FindControl("lblTerm");
Literal lblTermDefinition = (Literal)e.Item.FindControl("lblTermDefinition");
if (dicItem.Term.IndexOf(ddlBogstav.SelectedItem.Value.ToLower()) == 0)
{
lblTerm.NavigateUrl = "java script:toggle('xxx" + g + "');";
lblTerm.Text = dicItem.Term;
lblTermDefinition.Text = "<div style=\"display:none\" id=\"xxx" + g + "\">" + dicItem.TermDefinition + "</div>";
}
....
....
Men problemet er at jeg får en fjelmeddelelse, når jeg klikker på ord og betydningen vises ikke:
--- An errror has occured ---
--- Do you wish to debug? ---
--- Line: 0 ---
--- Error: Object expected ---