0

我正在开发一个网站,并在 gridview 模板字段中有一个文本框。此文本框收集“订单数量”的输入,该输入必须与“可用数量”(存储在数据库中)进行比较。

我在 gridview 中使用 RowEditing、RowUpdating 和 RowCanceling 事件进行编辑操作。

我尝试使用文本框的“TextChanged”事件来实现上述要求。但问题是,当用户编辑数量并单击“更新”按钮时,文本框事件首先触发,更新按钮事件不会触发。因此,用户被迫再次单击“更新”按钮。

上述场景或用于实现上述要求的任何其他事件是否有任何解决方法?

谢谢,巴拉吉克

4

2 回答 2

0

我想我会尝试使用 CustomValidator。使用 CustomValidator,您可以在“_ServerValidate”事件处理程序中定义验证代码。

在您的验证代码中,您可以调用数据库以获取当前值,然后将其与提交的值进行比较(如果您指定 ControlToValidate,则可以通过事件处理程序的 ServerValidateEventArgs 参数获得)。

为了在数据库中查找当前值,您需要知道点击了哪条记录。为此,您可以使用行按钮的 CommandArgument 属性或在行中包含一个隐藏字段来存储某种类型的 ID。然后您可以捕获该 ID 并使用它在数据库中查找所需的记录。

用代码更新

Protected Sub cusCustom_ServerValidate(source As Object, args As System.Web.UI.WebControls.ServerValidateEventArgs)
    Dim cv As CustomValidator = CType(source, CustomValidator)
    Dim HiddenField_ID As HiddenField = CType(cv.Parent.FindControl("HiddenField_ID"), HiddenField)
    *** Use ID to look up value in database ***
End Sub
于 2013-04-18T12:56:47.030 回答
0

您可以为此使用 RangeValidator ...

    <asp:RangeValidator ID="RangeValidator1" ControlToValidate="YourTexBoxId" 
runat="server" MinimumValue="0" Type="Integer"
MaximumValue='<%# GetQuantity(Eval(TotalQaunt).ToString(),Eval(ItemId).ToString()) %>'
 ErrorMessage="RangeValidator"></asp:RangeValidator>

编写一个函数 lyk this ON CODE BEHIND

string GetQuantity(string totalquantity,string itemid)
{
DO OPERATRION TO GET QUANTITY.....
return quantity;
}
于 2013-04-18T10:05:02.577 回答