Это просто глупо. Я занимаюсь этим более 5 часов и не могу понять, почему мои долбанные команды не запускаются должным образом. Единственное, что срабатывает правильно, это встроенные команды «Редактировать» и «Отмена»
Разметка
<asp:ListView ID="NewProduct" runat="server" DataSourceID="NewProductSDS" DataKeyNames="ID">
<ItemTemplate>
<div>
<asp:LinkButton ID="accept" runat="server" CommandName="Accept" />
<asp:LinkButton ID="edit" runat="server" CommandName="Edit" />
<asp:LinkButton ID="delete" runat="server" CommandName="Reject" />
<%# Eval("Product")%>
</div>
</ItemTemplate>
<EditItemTemplate>
<div>
<asp:LinkButton ID="accept" runat="server" CommandName="Accept" />
<asp:LinkButton ID="cancel" runat="server" CommandName="Cancel" />
<asp:TextBox ID="NewProductName_tb" runat="server"></asp:TextBox>
</div>
</EditItemTemplate>
</asp:ListView>
<asp:SqlDataSource ID="NewProductSDS" runat="server"
ConnectionString="<%$ ConnectionStrings:myConnectionString %>"
SelectCommand="select ID, Product from Products">
</asp:SqlDataSource>
Codebehind
Protected Sub ItemBind(ByVal sender As Object, ByVal e As ListViewItemEventArgs) Handles NewProduct.ItemDataBound
If e.Item.ItemType = ListViewItemType.DataItem Then
sender.DataKeys(e.Item.DataItemIndex).Value.ToString() 'get the datakey
'Display each key as it's created for troubleshooting.
Label1.Text += "bound: " + sender.DataKeys(e.Item.DataItemIndex).Value.ToString() + "<br />"
End If
End Sub
Protected Sub ItemClick(ByVal sender As Object, ByVal e As CommandEventArgs) Handles NewProduct.ItemCommand
'Check if an event fired when a LinkButton is clicked.
Label1.Text = "Command Event Fired"
If e.CommandName = "Accept" Then
Session.Add("PKey", sender.DataKeys(e.CommandArgument).Value.ToString)
Label1.Text = "Accept key " + Session.Item("PKey")
ElseIf e.CommandName = "Reject" Then
Session.Add("PKey", sender.DataKeys(e.CommandArgument).Value.ToString)
Label1.Text = "Reject key " + Session.Item("PKey")
End If
End Sub
Это весь код, который я использую для отладки этого мусора. Самая странная вещь, которую я не могу понять, это то, что все клавиши отображаются на новой странице, например, так ...
bound: 9
bound: 12
bound: 27
bound: 31
bound: 32
Затем, внезапно, когда я щелкаю встроенную Команду (в данном случае Редактировать или Отменить, обратите внимание, что их нет в моем коде обработчика события ItemCommand
), появляется этот мусор, подразумевая, что он видит щелчок перед привязкой.
Command Event Firedbound: 9
bound: 12
bound: 27
bound: 31
bound: 32
Что бы ни происходило, проблема, которую я пытаюсь решить, заключается в том, что мои пользовательские команды по какой-то причине не распознаются. Есть какие-нибудь идеи? Я искал ответы на все вопросы и ничего: (
Если вы скопировали весь этот код в новый проект, он должен скомпилироваться. Я был бы когда-либо так благодарен за вашу помощь. --- Я так отчаялся, что собираюсь справиться с каждым чертовым событием для ListView
элемента управления в надежде раскрыть что-то о порядке стрельбы и, возможно, понять, что происходит не так. ---: '(
ОБНОВЛЕНИЕ: я сделал это, лол. Интересно, но не уверен, что это говорит мне что-нибудь новое. Вот что запускается при загрузке новой страницы со всеми событиями:
Init
Load
DataBinding
ItemCreated
bound: 9
ItemCreated
bound: 12
ItemCreated
bound: 27
ItemCreated
bound: 31
ItemCreated
bound: 32
DataBound
PreRender