GridView中有一列是只显示的,另一列是可编辑的,我想做到的是,可编辑的列只允许输入数字,而且不能大于可显示的列值,请教各位大佬怎么加验证控件,加哪个验证控件?具体怎么写?
图例:------------------------------
名称 可发货数量 本次发货量
1 20
2 50
-----------------------------
本次发货量不能超过可发货数据。
aspx中的GridView代码如下:
<asp:GridView ID="GridView1" runat="server" Width="80%" AutoGenerateColumns="False" DataSourceID="SqlDataSource1">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="chkSelect" runat="server" ></asp:CheckBox>
</ItemTemplate>
<ItemStyle Width="20px"/>
</asp:TemplateField>
<asp:TemplateField HeaderText="名称">
<ItemTemplate>
<asp:Label ID="lbWh" runat="server" Text='<%# Bind("Wh") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="可发库存数量">
<ItemTemplate>
<asp:Label ID="lbRest" runat="server" Text='<%# Bind("Rest") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="本次发货数量">
<ItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("Rest") %>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
图例:------------------------------
名称 可发货数量 本次发货量
1 20
2 50
-----------------------------
本次发货量不能超过可发货数据。
aspx中的GridView代码如下:
<asp:GridView ID="GridView1" runat="server" Width="80%" AutoGenerateColumns="False" DataSourceID="SqlDataSource1">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="chkSelect" runat="server" ></asp:CheckBox>
</ItemTemplate>
<ItemStyle Width="20px"/>
</asp:TemplateField>
<asp:TemplateField HeaderText="名称">
<ItemTemplate>
<asp:Label ID="lbWh" runat="server" Text='<%# Bind("Wh") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="可发库存数量">
<ItemTemplate>
<asp:Label ID="lbRest" runat="server" Text='<%# Bind("Rest") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="本次发货数量">
<ItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("Rest") %>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
解决方案 »
- App_Code 这个文件夹可以改名么?(但不改变实际作用)
- asp.net每天的第一次打开页面都很慢
- 江苏 苏州DBA工资???求助
- 关很郁闷也很急的一个问题。。HELP (实在没分了谢谢各位)
- VS2005怎么转换成VS2003?
- 谁给我写一个返回一个表所有数据的存储过程,以及怎么调用
- javascript相同的代码,不同机器运行不一样,有的报错,有的正常
- 请教window media server
- 怪问题
- 请问如何根据数据库的数据在DATAGRID里构造dropdownlist?
- DataList显示样式
- 用ITextSharp将GridView的内容导出到PDF时,如何能够让列根据数据来自动调整列宽?
<asp:GridView ID="GridView1" runat="server" Width="80%" AutoGenerateColumns="False" DataSourceID="SqlDataSource1">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="chkSelect" runat="server" > </asp:CheckBox>
</ItemTemplate>
<ItemStyle Width="20px"/>
</asp:TemplateField>
<asp:TemplateField HeaderText="名称">
<ItemTemplate>
<asp:Label ID="lbWh" runat="server" Text=' <%# Bind("Wh") %>'> </asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="可发库存数量">
<ItemTemplate>
<asp:Label ID="lbRest" runat="server" Text=' <%# Bind("Rest") %>'> </asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="本次发货数量">
<ItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text=' <%# Bind("Rest") %>'> </asp:TextBox>
<asp:CompareValidator ID="CompareValidator2" runat="server" ControlToValidate="txtNumber"
ErrorMessage="人数必须大于0" Operator="GreaterThan" Type="Integer" ValueToCompare='<%# Bind("Rest") %>'></asp:CompareValidator>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
ErrorMessage="发货数量不能大于库存数量" Operator="GreaterThan" Type="Integer" ValueToCompare='<%# Bind("Rest") %>'></asp:CompareValidator>
这样就行了。
验证控件是微软推出一组用于减少网站程序开发人员编写客户端脚本验证代码的控件,熟练使用这些验证控件可以很方便地验证用户填写的数据的规则有效性。
本篇要讲述的知识点如下:数据验证介绍纯客户端脚本验证asp.net验证控件概述RequiredFieldValidator控件CompareValidator控件RangeValidator控件正则表达式RegularExpressionValidator控件CustomValidator控件ValidationSummary控件 分组校验技术并讲述了验证控件之间如何搭配使用,以及一些个人经验和技巧。asp.net夜话之八:数据绑定控件
在asp.net中所有的数据库绑定控件都是从BaseDataBoundControl这个抽象类派生的,这个抽象类定义了几个重要属性和一个重要方法:DataSource属性:指定数据绑定控件的数据来源,显示的时候程序将会从这个数据源中获取数据并显示。DataSourceID属性:指定数据绑定控件的数据源控件的ID, 显示的时候程序将会根据这个ID找到相应的数据源控件,并利用这个数据源控件中指定方法获取数据并显示。DataBind()方法:当指定了数据绑定控件的DataSource属性或者DataSourceID属性之后,再调用DataBind()方法才会显示绑定的数据。并且在使用数据源时,会首先尝试使用DataSourceID属性标识的数据源,如果没有设置DataSourceID时才会用到DataSource属性标识的数据源。也就是说DataSource和DataSourceID两个属性不能同时使用。数据绑定控件的DataSource控件属性必须是一个可以枚举的数据源,如实现了ICollection、IEnumerable或IListSource接口的类的实例。
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="chkSelect" runat="server" > </asp:CheckBox>
</ItemTemplate>
<ItemStyle Width="20px"/>
</asp:TemplateField>
<asp:TemplateField HeaderText="名称">
<ItemTemplate>
<asp:Label ID="lbWh" runat="server" Text=' <%# Bind("Wh") %>'> </asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="可发库存数量">
<ItemTemplate>
<asp:Label ID="lbRest" runat="server" Text=' <%# Bind("Rest") %>'> </asp:Label>
</ItemTemplate>
<EditItemTemplate>
在这里增加修改数据的控件,例如TextBox, 数据验证控件等等
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="本次发货数量">
<ItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text=' <%# Bind("Rest") %>'> </asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
TextBox1.Attributes.Add("onkeydown","if(13==event.keyCode) return checkOnlyNum(this);");
TextBox1.Attributes.Add("onkeypress","OnlyInputNum();");在前台定义
function OnlyInputNum()
{
if(event.keyCode<asc("0") || event.keyCode>asc("9"))
event.returnValue=false;
}function checkOnlyNum(this)
{
var intvalue = this.value;
var intmax = this.parentElement.cells[1].children[0].value;
if(intvalue >intmax )
{
alert("输入的值过大");
return false;
}
return true;
}
你试试
TextBox1.Attributes.Add("onkeypress","OnlyInputNum();");
TextBox是存在GRidView里的,如果要绑定客户端事件的话,你可以GridView的数据绑定后的事件里做,用e.FindContorl("控件名"),然后在绑定客户端事件
ErrorMessage="人数必须大于0" Operator="GreaterThan" Type="Integer" ValueToCompare='<%# Bind("Rest") %>'></asp:CompareValidator>
顶,就这个吧
我将他改为ControlToValidate="TextBox1",可以通过编辑,但不起作用,不执行验证
多谢楼上众位大虾美女,接分了.