Это прекрасная возможность объединить zip()
, cycle()
и enumerate()
.
.
cycle()
обеспечит ваше требование «начать заново». zip()
позволяет вам повторять два списка одновременно. enumerate()
используется, чтобы решить добавить или вычесть значения.
from itertools import cycle
digits = listOfDigits
values = cycle(listOfValues)
for i, (digit, value) in enumerate(zip(digits, values)):
if i % 2 == 0:
print(digit - value)
else:
print(digit + value)
Я нашел решение, которое позволит мне сохранять состояние отображения через обратные передачи. Это должно назвать TrackViewState ItemCollection.
CType(ddl.Items, IStateManager).TrackViewState()
Благодаря всем для Вашей справки.
Это - рабочее решение:
<%@ Page Language="VB"%>
<script runat="server">
Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs)
If Not Page.IsPostBack Then
ddlFixed.Items.Add(New ListItem("12", "13"))
ddlFixed.Items.Add(New ListItem("14", "15"))
End If
Dim i As Integer
For i = 0 To 3
Dim ddl As New DropDownList
ddl.ID = "ddlPage" & i
CType(ddl.Items, IStateManager).TrackViewState()
If Not Page.IsPostBack Then
ddl.Items.Add(New ListItem("12", "13"))
ddl.Items.Add(New ListItem("14", "15"))
End If
pnlDynamic.Controls.Add(ddl)
Dim txtBx As New TextBox
txtBx.ID = "txtPage" & i
If Not Page.IsPostBack Then
txtBx.Text = "Preset"
End If
pnlDynamic.Controls.Add(txtBx)
Next
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server" >
<div>
<br />
<br />
<a href="Default.aspx">Get-Request</a>
<br />
<br />
<asp:Panel runat="server" ID="pnlDynamic" />
<br />
<br />
<asp:DropDownList runat="server" ID="ddlFixed" />
<asp:Button runat="server" ID="btn" Text="Postback"/>
</div>
</form>
</body>
</html>
DDL поддержит свои объекты и выбор, когда состояние отображения будет включено. Текстовое поле поддержит свое содержание независимо от состояния отображения, так как получающийся HTML записывается обратно к серверу на обратной передаче.
Я нахожу это courious, что у Вас есть все эти операторы состояния отображения в Вашем коде и разметке.
Одна из нескольких вещей происходит:
Элементы списка в DropDownList не хранятся в поле зрения состояние. Необходимо будет добавить их на каждой обратной передаче.
Что хранится в поле зрения, состояние является выбранным индексом - т.е. 'значение' управления.
Править: Ну, кажется, что я изучил что-то сегодня. Я признаю ошибку :-)
Можете быть Вы, должен явно активировать ViewState для тех DropDownLists...
Править: Это - то, что я подразумеваю под своим последним комментарием...
<script runat="server">
Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs)
If Not Page.IsPostBack Then
ddlFixed.Items.Add(New ListItem("12", "13"))
ddlFixed.Items.Add(New ListItem("14", "15"))
Dim i As Integer
For i = 0 To 3
Dim ddl As New DropDownList
ddl.ID = "ddlPage" & i
ddl.EnableViewState = True
ddl.Items.Add(New ListItem("12", "13"))
ddl.Items.Add(New ListItem("14", "15"))
pnlDynamic.Controls.Add(ddl)
Dim txtBx As New TextBox
txtBx.ID = "txtPage" & i
txtBx.Text = "Preset"
pnlDynamic.Controls.Add(txtBx)
Next
End If
End Sub
</script>
Я всегда использую Page_Load
и никогда не испытывайте затруднения как это. Возможно, что-то Вы могли посмотреть на.
Я обычно связываю данные со средствами управления в первый раз загрузки страницы, и после того дескриптора Состояния отображения, которому позволяют, обратные передачи и т.д. Обратите внимание, что они предлагают, чтобы Вы связали данные во время Page_Load
...
Выезд http://support.microsoft.com/kb/305141
События страницы loadTOCNode (2, 'moreinformation'); Во время жизненного цикла страницы ASP.NET несколько стандартных событий, которые выставляются от Объекта страницы, часто используются. Платформа страницы ASP.NET автоматически соединяется с (или обеспечивает электричеством), соответствующие экземпляры делегата во время выполнения для этих методов. Это сохраняет Вас от необходимости написать необходимый "код связующего звена". Следующий список представляет экземпляры делегата, которые обеспечены электричеством во время выполнения в порядке, в который они уволены:Следующий список обрисовывает в общих чертах события, которые недетерминированы:
- Page_Init: Во время этого события можно инициализировать значения или соединить любые обработчики событий, которые Вы можете иметь.
- Page_Load: Во время этого события можно выполнить ряд действий, чтобы или создать страницу ASP.NET впервые или ответить на клиентские события, которые следуют из сообщения. Страница и состояние отображения управления были восстановлены до этого события. Используйте свойство страницы IsPostBack, чтобы проверить, является ли это первым разом, когда страница обрабатывается. Если это - первый раз, выполните привязку данных. Кроме того, считайте и обновите свойства элементов управления.
- Page_DataBind: событие DataBind генерируется, когда метод DataBind называют на уровне страницы. При вызове DataBind на отдельных средствах управления он только запускает событие DataBind средств управления под ним.
- Page_PreRender: событие PreRender запущено непосредственно перед тем, как состояние отображения сохраняется, и средства управления представляются. Можно использовать это событие для выполнения любых последних операций на средствах управления.
- Page_Unload: После того, как страница закончила представлять, огни события Page_Unload. Это событие является хорошим местом для выполнения заключительной работы очистки. Это включает объекты, такие как очистка открытых соединений с базой данных, отбрасывая объекты, или закрывая те файлы, которые открыты.
- Page_Error: Если необработанное исключение происходит во время обработки страницы, огней события Error. Событие Error дает Вам возможность корректно обработать ошибки.
- Page_AbortTransaction: события Транзакции полезны, если Вы хотите указать, успешно выполняется ли транзакция или перестала работать. Это событие является наиболее часто используемым для сценариев корзины, в которых это событие может указать на успешность или неуспешность порядка. Это событие стреляет, когда транзакция была прервана.
- Page_CommitTransaction: Это событие стреляет, когда транзакция фиксировалась успешно.