我正在开发一个网站,并在gridview模板字段中有一个文本框。此文本框收集“订单数量”的输入,必须与“可用数量”(存储在数据库中)进行比较。
我在gridview中使用RowEditing,RowUpdating和RowCanceling事件进行编辑操作。
我尝试使用“TextChanged”事件的文本框实现上述要求。但问题是,当用户编辑数量并点击“更新”按钮时,文本框事件将首先触发,更新按钮事件不会触发。因此,用户被迫再次点击“更新”按钮。
上述方案或用于实现上述要求的任何其他事件是否有任何解决方法?
谢谢, 巴拉吉克
答案 0 :(得分: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;
}
答案 1 :(得分: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