У меня есть ретранслятор asp и его DataSource - это DataTable (с данными из базы данных). При первой загрузке страницы DataTable заполняется из db, а затем его данные привязываются к Repeater. Затем я помещал DataTable в ViewState, а при обратной передаче я использую DataTable из ViewState, затем он позволяет мне вводить данные в базу данных только после того, как пользователь выполнил все.Repeater, datatable и флажок включить/отключить
Некоторые строки могут быть добавлены в ретранслятор (путем добавления к DataTable в viewstate и последующего связывания).
Вот код повторителя:
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:HiddenField ID="HdfHiddenRow" ClientIDMode="Static" runat="server" />
<asp:HiddenField ID="HdfHiddenId" ClientIDMode="Static" runat="server" />
<div style="display:none;">
<asp:Button ID="BtnHiddenButton" runat="server" Text="" OnClick="BtnHiddenButton_Click" />
</div>
<table id="TableEI" style="width: 800px; margin-left:50px;" cellpadding="0" cellspacing="0">
<asp:Repeater ID="Repeat_EffetsIndes" runat="server" OnItemDataBound="Repeat_EffetsIndes_ItemDataBound" >
<ItemTemplate>
<tr>
<td style="width: 431px;">
<asp:Label ID="LblEI" runat="server" />
</td>
<td class="auto-style1">
<asp:CheckBox ID="CheckOui" ClientIDMode="Static" runat="server" Text="Yes" onclick="CheckedLine(this)" />
</td>
<td>
<asp:CheckBox ID="CheckOui1" ClientIDMode="Static" runat="server" Enabled="false" Text="some text1" />
<br />
<asp:CheckBox ID="CheckOui2" ClientIDMode="Static" runat="server" Enabled="false" Text="some text2" />
<br />
<asp:CheckBox ID="CheckOui3" ClientIDMode="Static" runat="server" Enabled="false" Text="some text3" />
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
.....
[textbox + button to add new row there]
.....
</ContentTemplate>
</asp:UpdatePanel>
Проверьте пример строки из моего Repeater:
http://img4.hostingpics.net/pics/356954example.png
Когда первый флажок (Да) в chcked: она позволяет 3 право флажки. (это было сделано благодаря javascript)
Я должен был предоставить уникальный идентификатор моим 4-мя галочками в каждой строке и определить, какие флажки должны быть включены, когда родительский флажок установлен. Я даю уникальный идентификатор события ItemDataBound ретранслятора.
protected void Repeat_EffetsIndes_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
DataRowView drv = e.Item.DataItem as DataRowView;
((Label)e.Item.FindControl("LblEI")).Text = drv["Suivi_EffetsIndes_Label"].ToString();
CheckBox ParentCheckBox = ((CheckBox)e.Item.FindControl("CheckOui"));
CheckBox ChildCheckBox1 = ((CheckBox)e.Item.FindControl("CheckOui1"));
CheckBox ChildCheckBox2 = ((CheckBox)e.Item.FindControl("CheckOui2"));
CheckBox ChildCheckBox3 = ((CheckBox)e.Item.FindControl("CheckOui3"));
string _IdPrefix = Guid.NewGuid().ToString().Replace("-", "");
// Affectation d'un ID unique à chaque checkbox "Oui"
ParentCheckBox.ID = _IdPrefix;
// Concaténation de l'ID de la checkbox parent (Oui) et d'un chiffre pour identifier les checkboxes.
ChildCheckBox1.ID = _IdPrefix + "1";
ChildCheckBox2.ID = _IdPrefix + "2";
ChildCheckBox3.ID = _IdPrefix + "3";
}
Проблема
Когда один из правильных флажков 3 проверяется, я хотел бы, чтобы сразу обновить правильное значение в ViewState DataTable (комплект поле «проверено» от 0 до 1).
Проблема в том, что у меня есть некоторые проблемы, чтобы поймать флажки «CheckedChanged», не знаю, почему, а также «ID» флажков, как представляется, всегда имеет значение по умолчанию, поэтому я могу их найти например, написав «Repeater.Items [x] .FindControl (« CheckOui1 »), и это не должно быть возможным, потому что я даю им новый идентификатор, и именно благодаря этому я хотел бы найти, какой флажок проверены.
(извинения за мое не безупречный английское написание)
Большое спасибо candeias, что решило мою проблему! Не знаю, почему я не обратил внимания на то, что GUID вызвал большие проблемы, например, если я был слепым: p –