Необходимо внести изменения в мою базу данных на основе данных ListViewItem кнопки, на которую нажимают.(т. е. если кто-то нажал кнопку в первом элементе, у источника данных этого элемента есть столбец / значение SessionId, к которому мне нужно получить доступ)
Я попытался получить доступ к элементу с помощью свойства SelectedIndex (действительно ли это предполагается , чтобы вернуть -1?), но неясно, какие шаги предпринять в следующем
Если бы я использовал WPF, я думаю, я мог бы просто получить доступ к DataContext кнопок, но, очевидно, он отличается от asp.net, и я не могу найтиэквивалент.
Listview в .aspx:
<asp:ListView
ID="lvInstructors"
runat="server"
itemwDataBound="lvDataBound"
itemCommand="lvCommand"
Visible="true">
<LayoutTemplate>
<div class="container" id="mainContent">
<asp:PlaceHolder ID="itemPlaceHolder" runat="server" />
</div>
</LayoutTemplate>
<ItemTemplate>
<div class="row instructorItem" id="instructorItem">
<div class="col-2 sessionStartTimeDiv">
<p class="sessionStartTime"><%#Eval("SessionStartTime")%></p>
</div>
<div class="col-2 instructorHeadshotDiv">
<asp:Image class="instructorHeadshot" runat="server" src='<%#Eval("InstructorHeadshot")%>' />
</div>
<div class="col-5 sessionInfoDiv">
<h3 class="instructorName"><%#Eval("InstructorName")%></h3>
<p class="sessionInfo"><%#Eval("SessionInfo")%></p>
</div>
<div class="col-3 checkInBtnDiv">
<asp:Button class="checkInBtn" ID="checkInBtn" runat="server" OnClick="CheckInBtn_Click" Text="Check-In"></asp:Button>
</div>
</div>
<hr />
</ItemTemplate>
<EmptyDataTemplate>
<br />
<br />
No Sessions to Display.
</EmptyDataTemplate>
</asp:ListView>
Вот как я заполняю свой lv в .aspx.cs Codebehind:
private void UpdateInstructorListView()
{
//Make Data table to hold ListViewItem Data
dt = new DataTable();
dt.Columns.Add("SessionId");
dt.Columns.Add("SessionStartTime");
dt.Columns.Add("InstructorHeadshot");
dt.Columns.Add("InstructorName");
dt.Columns.Add("SessionInfo");
DataRow dr;
foreach (Session S in UpcomingSessions)
{
foreach (Enrollment I in S.Instructors())
{
//
SessionId = S.SessionId;
SessionStartTime = S.FirstDateTime().ToShortTimeString();
// TODO: JUSTIN FIGURE OUT HOW/WHERE TO PULL HEADSHOT FROM THEN BEST WAY TO ADD IT TO src ATTRIBUTE
InstructorHeadshot = "headshots/Justin.jpg";
InstructorName = I.FirstName + " " + I.LastName;
SessionInfo = S.Name + " , " + S.Room.ToString();
//Fill rows in DataTable with variables
dr = dt.NewRow();
dr["SessionId"] = SessionId;
dr["SessionStartTime"] = SessionStartTime;
dr["InstructorHeadshot"] = InstructorHeadshot;
dr["InstructorName"] = InstructorName;
dr["SessionInfo"] = SessionInfo;
dt.Rows.Add(dr);
}
}
//Bind datatable to lv
lvInstructors.DataSource = dt;
lvInstructors.DataBind();
}
Я ожидаю, что будетвозможность доступа к данным ListViewItem, чья кнопка была нажата.(т.е. иметь возможность получить / использовать lvInstructorList.selectedIndex.InstructorName)