Молчун
Зарегистрирован: 23 February 2005
Сообщения: 38
Примеры кода: 1
|
RE: Событие из вложенных репиторов |
08 June 2005 00:59 |
|
|
|
|
Студия - вот код (реально все в code-behind, но эффект тот же):
<%@ Page language="c#" AutoEventWireup="true" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<script language="C#" runat="server">
System.Data.DataSet ds = new System.Data.DataSet();
void Page_Load(Object Sender, EventArgs e) {
if (!IsPostBack) {
string xmlData = @"
<Countries>
<Country name=""Russia"">
<city name=""Urupinsk"" id=""1"" />
<city name=""Urupinsk-19"" id=""2"" />
</Country >
<Country name=""Non-Russia"">
<city name=""Non-Urupinsk"" id=""3"" />
<city name=""Non-Urupinsk-19"" id=""4"" />
</Country >
</Countries>";
ds.ReadXml(new System.IO.StringReader(xmlData));
repParent.DataSource = ds.Tables["Country"];
DataBind();
}
}
void repParent_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Repeater repChild = (Repeater)e.Item.FindControl("repChild");
repChild.ItemDataBound += new System.Web.UI.WebControls.RepeaterItemEventHandler(this.repChild_ItemDataBound);
repChild.DataSource = ((System.Data.DataRowView)(e.Item.DataItem)).CreateChildView("Country_City");
repChild.DataBind();
}
}
void repChild_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
LinkButton linkCity = (LinkButton)e.Item.FindControl("linkCity");
linkCity.Command += new CommandEventHandler(this.linkCity_OnCommand);
linkCity.CommandArgument = (e.Item.DataItem as System.Data.DataRowView)["id"].ToString();
}
}
void linkCity_OnCommand(Object sender, CommandEventArgs e)
{
Label1.Text = "You chose: " + e.CommandName + " Item# " + e.CommandArgument;
}
</script>
</HEAD>
<body>
<form id="Form1" method="post" runat="server">
<asp:label id="Label1" runat="server"></asp:label>
<table>
<tr>
<asp:repeater id="repParent" runat="server" OnItemDataBound="repParent_ItemDataBound">
<ItemTemplate>
<td>
<%# DataBinder.Eval(Container.DataItem,"Name")%>
<hr>
<asp:Repeater id="repChild" runat="server">
<ItemTemplate>
<asp:LinkButton id="linkCity" runat="server" CommandName="Select" >
<%# DataBinder.Eval(Container.DataItem,"Name")%>
</asp:LinkButton><BR>
</ItemTemplate>
</asp:Repeater>
</td>
</ItemTemplate>
</asp:repeater></tr>
</table>
</form>
</body>
</HTML>
Вся проблема в строке. linkCity.Command += new CommandEventHandler(this.linkCity_OnCommand);
Когда прописал в теге LinkButton OnCommand="linkCity_OnCommand" - все работает.
Данное сообщение получено с сайта GotDotNet.RU
Последний раз редактировалось 08 June 2005 01:00
|
|