Как передать значение с помощью 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" />
Другие вопросы по тегам