У меня проблемы с LinkButton, запускающим событие OnClick, когда LinkButton находится во вложенном повторителе.
Вот мой HTML Разметка
<asp:Repeater ID="RepeaterGenres" runat="server" OnItemDataBound="LoadTitles">
<ItemTemplate>
<asp:HiddenField ID="hdnGenre" runat="server" Value='<%# DataBinder.Eval(Container.DataItem, "GenreID") %>' />
<%# DataBinder.Eval(Container.DataItem, "MovieGenre") %>
<asp:Repeater ID="RepeaterMovies" runat="server">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "MovieName") %>
<asp:LinkButton ID="lbMovieInfo" runat="server" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "MovieID") %>' OnClick="LoadMovieTitle">
Access Info
</asp:LinkButton>
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
</asp:Repeater>
Вот мой способ загрузки жанров. (убрали некоторые объявления для упрощения).
string sqlString = "SELECT * FROM Movies_Genres";
sqlCmd = new SqlCommand(sqlString, myConnection);
sqlReader = sqlCmd.ExecuteReader();
if (sqlReader.HasRows)
{
RepeaterGenres.DataSource = sqlReader;
RepeaterGenres.DataBind();
}
Вот мой метод загрузки названий Mov ie в каждом жанре.
protected void LoadTitles(object sender, RepeaterItemEventArgs args)
{
if (args.Item.ItemType == ListItemType.Item || args.Item.ItemType == ListItemType.AlternatingItem)
{
// Genre from HiddenField
HiddenField GenreID = (HiddenField)args.Item.FindControl("hdnGenre");
// Repeater
Repeater childRepeater = (Repeater)args.Item.FindControl("RepeaterMovies");
string sqlString = "SELECT * FROM Movies_Titles " +
"WHERE Genre = @Genre";
sqlCmd = new SqlCommand(sqlString, myConnection);
sqlCmd.Parameters.AddWithValue("@Genre", GenreID.Value);
sqlReader = sqlCmd.ExecuteReader();
if (sqlReader.HasRows)
{
childRepeater.DataSource = sqlReader;
childRepeater.DataBind();
}
else
{
childRepeater.DataSource = "";
childRepeater.DataBind();
}
}
}
Все до этого момента работает отлично. Я получаю свои группы жанров, и в каждом жанре я получаю заголовки mov ie, помеченные для этого жанра, а также кнопку Link для каждого заголовка mov ie. Это LinkButton, который НЕ запускает событие OnClick.
Вот код, который я использую для события OnClick.
protected void LoadMovieTitle (Object sender, EventArgs e)
{
LinkButton linkb = (LinkButton)(sender);
string args = linkb.CommandArgument;
Response.Redirect("movieinfopage.aspx?id=" + args);
}
Решение, с которым я надеюсь получить помощь, - это то, что мне нужно сделать, чтобы эти LinkButton запускали событие OnClick при нажатии и получали доступ к LoadMovieTitle. Когда я помещаю разрыв в этот метод, он не прерывается, сообщая мне, что событие OnClick не находит или не распознает его.