Vis og skjul af data fra databasen i en Repeater
Hejjeg har en Repeater, der henter ord og deres betydning fra en sql-database. Det viser en efter en (efter at jeg har valgt med hvilke bogstav skal ordet begynde). Fx hvis jeg vælger 'A' i dropdownlist, så viser aller forekomst af ord, der begynder med et 'A'. Nederst viser det også deres betydning fra et andet felt i databasen (Betydning).
Det jeg gerne vil have er , at vise betydning af et ord, kun når jeg klikker på ordet, og når jeg vælge et andet ord, så heller skjules den tidligere valgte betydning.
Her er lidt kode:
aspx filen:
----------
....
....
<body>
<form id="form1" runat="server">
<div>
<p>
<asp:Literal ID="ltVaelgDic" runat="server" Text="Vælg Dictionary"></asp:Literal>
</p>
<asp:RadioButtonList ID="radioVaelgDic" runat="server"
RepeatDirection="Horizontal">
<asp:ListItem Selected="True" Value="da-DK">Dansk</asp:ListItem>
<asp:ListItem Value="en-US">Engelsk</asp:ListItem>
</asp:RadioButtonList>
<br />
<asp:DropDownList ID="ddlBogstav" runat="server">
<asp:ListItem Selected="True">-- Begyndelsesbogstav --</asp:ListItem>
<asp:ListItem>A</asp:ListItem>
<asp:ListItem>B</asp:ListItem>
<asp:ListItem>C</asp:ListItem>
<asp:ListItem>D</asp:ListItem>
</asp:DropDownList>
<br />
<asp:Button ID="btnFind" runat="server" Text=" Find " onclick="btnFind_Click" />
<br />
<asp:Label ID="lblAntalForekomst" runat="server"></asp:Label>
<br />
<asp:Repeater ID="rpOrdList" runat="server">
<ItemTemplate>
<b><asp:LinkButton ID="hyperOrd" runat="server" Text='<%# Eval("Ord") %>'></asp:LinkButton></b>
<ul>
<asp:Label ID="lblBetydning" runat="server" Text='<%# Eval("Betydning") %>'></asp:Label>
</ul>
</ItemTemplate>
</asp:Repeater>
....
-----------
aspx.cs filen
-------------
....
....
....
private void rpOrdList_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
DictionaryItem dicItem = (DictionaryItem)e.Item.DataItem;
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
//Laver en reference til 2 controller som er i repeater
LinkButton hyperOrd = (LinkButton)e.Item.FindControl("hyperOrd");
Label lblBetydning = (Label)e.Item.FindControl("lblBetydning");
if (dicItem.Ord.IndexOf(ddlBogstav.SelectedItem.Value.ToLower()) == 0)
{
hyperOrd.Text = dicItem.Ord;
lblBetydning.Text = dicItem.OrdDefinition;
lblBetydning.Visible = false;
//her skal jeg have en måde på, hvor der betydning af et ord kan vises og skjules, når man klikker på ordet
????
????
????
//tæler antal forekomst af ord, der begynder med a,b...
counter++;
}
else
{
hyperOrd.Text = "";
lblBetydning.Text = "";
}
}
}
protected void btnFind_Click(object sender, EventArgs e)
{
//Get a connection to the database
DataBaseManager dbManager = new DataBaseManager();
//Get data from database
List<DictionaryItem> list = dbManager.GetOrdOgBetydning(radioVaelgDic.SelectedValue.ToString());
rpOrdList.DataSource = list;
rpOrdList.DataBind();
this.lblAntalForekomst.Text = "Der er fundet " + "<strong>" + counter + "</strong>" + " forekomst.";
}
}
}
....
....
---------------------
jeg bruger VS 2008 og bruger også Generics (det er jeg nødt til, selv om selv ikke ved meget om det! Jeg ved bare at de er en slags type-sikker ArrayList)