0

当我尝试将值从 ImageButton 传递给控制参数时遇到问题,然后更新命令可以从控制参数中检索值以执行更新语句。

我想在单击 ImageButton APPROVE 时传递值 Status=1,否则在单击 ImageButton REJECT 时传递值 Status=2。

我应该在哪里以及如何分配值状态?当我运行我的代码时,我收到此错误:必须声明标量变量“@Status”。

或者有什么建议可以传递价值状态?

我的图像按钮:

<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"

我的控制参数

<UpdateParameters>                            
<asp:Parameter Name="bookingScheduleID" Type="Int32" />
<asp:ControlParameter Name="Status" ControlID="APPROVE"  Type="Int32" />
<asp:ControlParameter Name="Status" ControlID="REJECT"  Type="Int32" />
</UpdateParameters>
4

2 回答 2

0

您是否尝试过使用ImageButton的CommandArgument 属性?

来自 MSDN:

有时,多个 ImageButton 控件是相关的并共享相同的 CommandName 属性值,例如 Sort。使用此属性可使用有关要执行的命令的附加信息(例如升序)来补充 CommandName 属性。CommandName 和 CommandArgument 属性的值通常用于 OnCommand 事件处理程序,以确定单击 ImageButton 控件时要执行的操作。

<asp:ImageButton id="imagebutton1" runat="server"
       AlternateText="Sort Ascending"
       ImageUrl="images/pict.jpg"
       OnCommand="ImageButton_Command"
       CommandName="Sort"
       CommandArgument="Ascending"/>
于 2012-06-13T06:40:27.403 回答
0

按钮在 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);
}"

然后在 ControlParameter 中使用“StatusType”。

<asp:ControlParameter Name="Status" ControlID="StatusType"  Type="Int32" />
于 2012-06-13T06:25:29.163 回答