Я использую список для отображения различных столбцов / строк из базы данных. Один из этих столбцов является идентификатором и скрыт для пользователя. Еще один столбец - это флажок, который пользователь может щелкнуть, чтобы «выбрать задачу».
<asp:ListView ID="listViewDataSource" ConvertEmptyStringToNull="true" ItemPlaceholderID="itemPlaceholder" runat="server" DataKeyNames="id,intFrmID" SelectedIndex="0">
Затем в ItemTemplate:
<tr runat="server">
<td class="hidden">
<asp:Label ID="id" runat="server" Text='<%#Eval("id") %>' />
</td>
<td>
<asp:CheckBox ID="check" runat="server" OnCheckedChanged="check1_CheckedChanged" AutoPostBack="True" Checked='<%# (bool)Eval("bitIsPickedUp") %>' />
<asp:Label ID="CheckLabel" runat="server" Text='<%#Eval("bitIsPickedUp") %>' />
</td>
Когда кто-то нажимает на этот флажок, я хочу создать новую запись в БД. Для этого мне нужно получить скрытое поле «id» и передать его в мою функцию, которая добавляет запись.
protected void check1_CheckedChanged(object sender, EventArgs e)
{
//in here, I want to get the id, which I should be able to use listViewDataSource.SelectedDataKey but the datakey has one value and it's not correct, makes me think it's being cached somehow?
var datakey = listViewDataSource.SelectedDataKey;
CheckBox chk = (CheckBox)item.FindControl("bitIsPickedUp");
}
Я не очень знаком с веб-формами и использованием ListView, поэтому помощь приветствуется.