У меня есть вложенный ретранслятор, и каждый раз, когда я компилирую проект, VS автоматически удаляет декларацию внутреннего репитера от дизайнера, и мне нужно вручную добавить его снова.Определение ретранслятора будет удалено из конструктора во вложенном ретрансляторе
protected global::System.Web.UI.WebControls.Repeater rptrSubscriptions;
Я удалил VS temp файлы и после прочтения других вопросов, таких как мои, я также преобразовал страницу в веб-форму. Наконец, я изменил внутренний ретранслятор на GridView, так как я думал, что может быть ошибка для вложенного ретранслятора, но у меня все еще была та же проблема.
Для проверки работоспособности вложенного ретранслятора я добавил пустой повторитель с именем repeater1
, и он отлично работает: он не будет удален во время компиляции. Любые предложения будут оценены.
<%--================================================================--%>
<asp:Repeater ID="rptrSubscriptionGroups" runat="server" OnItemDataBound="rptrSubscriptionGroups_ItemDataBound" OnItemCommand="rptrSubscriptionGroups_ItemCommand">
<ItemTemplate>
<div>
<asp:Table ID="Table1" runat="server" BorderStyle="Solid" BorderWidth="1" Width="950">
<asp:TableRow CssClass="SolidBorder">
<%--SHow Subscriptions (Left Side)--%>
<asp:TableCell Width="550">
//some source here
</asp:TableCell>
<asp:TableCell>
<div class="">
<%--SHow Small TV+Radio Images--%>
<a href="#" style="text-decoration: none">
<asp:ImageButton ID="imgTVRadio" alt="" Style="width: 220px; height: 50px;" runat="server" OnCommand="SubscriptionGroup_Click" CommandName="SubscriptionClick" CommandArgument='<%# DataBinder.Eval(Container.DataItem,"ID")+","+DataBinder.Eval(Container.DataItem,"GroupName") %>' BorderStyle="None" />
</a>
<%-- ===========Test repeater that will not be removed from designer ====================================--%>
<asp:Repeater ID="Repeater1" runat="server"></asp:Repeater>
<%-- =========== repeater that will be removed from designer ====================================--%>
<asp:Repeater ID="rptrSubscriptions" runat="server" OnItemDataBound="rptrSubscriptions_ItemDataBound" OnItemCommand="rptrSubscriptions_ItemCommand">
<ItemTemplate>
<asp:Table ID="Table2" class="NoBorderInTable" runat="server" BorderStyle="Solid" BorderWidth="1" Width="380px">
<asp:TableRow CssClass="SolidBorder" Style="background-color: lightgray; border-color: white" Height="30px">
<%--Show Radio Buttons--%>
<asp:TableCell>
<%--<asp:RadioButton ID="RadioButton1" runat="server" />--%>
<input name="SubscriptionSelected" id="SubscriptionSelected" type="radio" value="1">
<%--Focuses on the selected radio button--%>
<script>
$('#tableSelect tr').click(function() {
$(this).find('th input:radio').prop('checked', true);
})
</script>
</asp:TableCell>
</asp:TableRow>
</asp:Table>
</ItemTemplate>
</asp:Repeater>
<%--=====================================================================================================--%>
</div>
</asp:TableCell>
</asp:TableRow>
</asp:Table>
</div>
</ItemTemplate>
</asp:Repeater>
Спасибо, Декер, это была отличная помощь и мудрый ответ :) Я очень ценю это. –
Замечательно, что это помогло! По крайней мере, вы используете ретрансляторы. Изучите эти способы, и вы найдете ретрансляторы очень полезными и простыми в использовании. Могу ли я также предложить вам использовать серверную таблицу и TableCell не добавляет ничего, поскольку вам не нужно будет обращаться к серверу. Используйте таблицу html и потеряйте накладные расходы. – Dacker