Как передать значение с помощью ImageButton для обновления базы данных?
У меня возникла проблема, когда я пытаюсь передать значение из ImageButton в controlparameter, тогда команда обновления может извлечь значение из параметра control для выполнения оператора update.
Я хочу передать значение Status=1 при нажатии кнопки ImageButton APPROVE, иначе передать значение Status=2 при нажатии кнопки ImageButton REJECT.
Где и как следует назначить значение Status? Когда я запускаю свой код, я получаю эту ошибку: необходимо объявить скалярную переменную "@Status".
Или какая-нибудь рекомендация передать значение Status?
Моя кнопка Image:
<ItemTemplate>
<asp:ImageButton runat="server" ID="APPROVE" CommandName="update"
ImageUrl="~/images/accept.png"
OnClientClick="if (!window.confirm('Are you sure you want to approve this booking?')) return false;" />
</ItemTemplate>
<ItemTemplate>
<asp:ImageButton runat="server" ID="REJECT" CommandName="update"
ImageUrl="~/images/reject.png"
OnClientClick="if (!window.confirm('Are you sure you want to reject this booking?')) return false;" />
</ItemTemplate>
Мое ОБНОВЛЕНИЕ
UpdateCommand="UPDATE [bookingschedule] SET status=@Status WHERE [bookingScheduleID] = @bookingScheduleID"
Мой ControlParameter
<UpdateParameters>
<asp:Parameter Name="bookingScheduleID" Type="Int32" />
<asp:ControlParameter Name="Status" ControlID="APPROVE" Type="Int32" />
<asp:ControlParameter Name="Status" ControlID="REJECT" Type="Int32" />
</UpdateParameters>
2 ответа
Вы пытались использовать свойство CommandArgument ImageButton?
Из MSDN:
Иногда несколько элементов управления ImageButton связаны между собой и имеют одно и то же значение для свойства CommandName, например Sort. Используйте это свойство, чтобы дополнить свойство CommandName дополнительной информацией о выполняемой команде, такой как Ascending. Значения свойств CommandName и CommandArgument обычно используются в обработчике событий OnCommand, чтобы определить действие, выполняемое при нажатии элемента управления ImageButton.
<asp:ImageButton id="imagebutton1" runat="server"
AlternateText="Sort Ascending"
ImageUrl="images/pict.jpg"
OnCommand="ImageButton_Command"
CommandName="Sort"
CommandArgument="Ascending"/>
Кнопка не имеет значения в html, и поэтому вы не можете использовать ее в объявлении ControlParameter. Одним из решений является создание скрытого текстового поля в форме. Давайте назовем это "StatusType".
<input type="hidden" name="StatusType" value="0">
Теперь в "OnClientClick" каждой из кнопок; присвойте значение StatusType как 1 или 2 (или каковы бы ни были ваши определенные коды состояния).
OnClientClick="if (!window.confirm('Are you sure you want to reject this booking?')) {
return;
}
else {
$('#StatusType').val(0);
}"
Затем используйте "StatusType" в ControlParameter.
<asp:ControlParameter Name="Status" ControlID="StatusType" Type="Int32" />