在DataGrid的编辑状态中,如何校验输入到文本框的数据是否正确?
解决方案 »
- 急!高分求教。用ASP.NET和C#做过DRM的朋友请指点一下!
- 奇怪,UpdatePanel内pageload里加上ScriptManager.RegisterStartupScript,其他Script就不能运行?
- 查询语句
- 满分求教:验证控件上传服务器抱 "webform postbackoptions 未定义"的错误.有解决过的朋友谢谢告诉下.感谢
- 关于ComponentArt的Grid控件
- 在javascript脚本中设置代码文件中的变量的值
- data中加一个“序号”的列怎么加?
- !!!请教下一步如何做??????
- 绑定该怎么象asp中那样自由处理啊?????????????????
- 小小散分!
- 如何取得一个panel上的Textbox的文本值?
- 真是一肚子的气,LIN KBUTTON。。。。哎。。。
<asp:TextBox id="aa" onkeyup="Compare()" runat="server" 0</asp:TextBox>
</ItemTemplate>
<script>
function Compare()
{
}
</script>
public class CTemplateColumn:ITemplate
{
private string colname;
public CTemplateColumn( string cname)
{
colname = cname;
} public void InstantiateIn(Control container)
{
TextBox tx = new TextBox();
tx.DataBinding += new EventHandler(this.OnDataBinding);
container.Controls.Add(tx);
}
public void OnDataBinding(object sender, EventArgs e)
{
TextBox tx = (TextBox) sender;
DataGridItem container = (DataGridItem)tx.NamingContainer;
tx.Text = ((DataRowView)container.DataItem)[colname].ToString();
}
}
AllowPaging="True" DataKeyField="id" Width="778px" Height="264px">
<AlternatingItemStyle BackColor="#C0C0FF"></AlternatingItemStyle>
<ItemStyle Font-Size="9pt" Height="24px"></ItemStyle>
<HeaderStyle Font-Size="9pt" HorizontalAlign="Center" Height="24px" ForeColor="#C0C0FF" BackColor="DarkBlue"></HeaderStyle>
<FooterStyle Font-Size="9pt" Height="24px"></FooterStyle>
<Columns>
<asp:BoundColumn DataField="id" SortExpression="id" ReadOnly="True" HeaderText="id">
<HeaderStyle Width="20px"></HeaderStyle>
<ItemStyle HorizontalAlign="Center"></ItemStyle>
</asp:BoundColumn>
<asp:TemplateColumn SortExpression="title" HeaderText="标题">
<HeaderStyle Width="100px"></HeaderStyle>
<ItemStyle HorizontalAlign="Left" VerticalAlign="Middle"></ItemStyle>
<ItemTemplate>
<%# DataBinder.Eval(Container, "DataItem.title" )%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox id=txtTitle Text='<%# DataBinder.Eval(Container, "DataItem.title")%>' Runat="server">
</asp:TextBox>
<asp:RequiredFieldValidator id="RequiredFieldValidator1" runat="server" Display="Dynamic" ControlToValidate="txtTitle">必须输入标题</asp:RequiredFieldValidator>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="内容">
<HeaderStyle Width="400px"></HeaderStyle>
<ItemTemplate>
<%# DataBinder.Eval(Container, "DataItem.content" )%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox id=txtContent runat="server" Height="100px" Width="400px" TextMode="MultiLine" Text='<%# DataBinder.Eval(Container, "DataItem.content")%>'>
</asp:TextBox>
<asp:RequiredFieldValidator id="RequiredFieldValidator2" runat="server" Display="Dynamic" ControlToValidate="txtContent">必须输入内容</asp:RequiredFieldValidator>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn SortExpression="intime" HeaderText="时间">
<HeaderStyle Width="100px"></HeaderStyle>
<ItemTemplate>
<%# DataBinder.Eval(Container, "DataItem.intime" )%>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<HeaderStyle Width="25px"></HeaderStyle>
<ItemStyle HorizontalAlign="Center" VerticalAlign="Middle"></ItemStyle>
<ItemTemplate>
<asp:LinkButton id="lbtnDelete" runat="server" CommandName="Delete">删除</asp:LinkButton>
</ItemTemplate>
</asp:TemplateColumn>
<asp:EditCommandColumn Visible="False" ButtonType="LinkButton" UpdateText="更新" CancelText="取消" EditText="编辑">
<HeaderStyle Width="55px"></HeaderStyle>
<ItemStyle HorizontalAlign="Center" VerticalAlign="Middle"></ItemStyle>
</asp:EditCommandColumn>
</Columns>
<PagerStyle NextPageText="下一页" Height="24px" Font-Size="9pt" PrevPageText="上一页" HorizontalAlign="Right"
Mode="NumericPages"></PagerStyle>
</asp:datagrid>
因为textbox放到datagrid里面,经过编译以后,其ID会变化,但是还是有一定规律的
比如下面的模板列:
<asp:TemplateColumn HeaderText="数 量">
<HeaderStyle HorizontalAlign="Center"></HeaderStyle>
<ItemStyle HorizontalAlign="Center"></ItemStyle>
<ItemTemplate>
<asp:TextBox id=SL Text='<%# DataBinder.Eval(Container.DataItem,"SL") %>' Width="70px" CssClass="tabletxt" MaxLength="10" Runat="server" EnableViewState="False">
</asp:TextBox>
</ItemTemplate>
</asp:TemplateColumn>经过编译以后,最终显示在页面上的html就会是下面的形式<input name="WL_WZBM:_ctl3:SL" type="text" value="50" maxlength="10" id="WL_WZBM__ctl3_SL" class="tabletxt" style="width:70px;" />
<input name="WL_WZBM:_ctl4:SL" type="text" value="50" maxlength="10" id="WL_WZBM__ctl4_SL" class="tabletxt" style="width:70px;" />我现在要验证其是不是数字,可以采用下面的js验证:
funtion Check_Data()
{
var reg=/^([1-9]*[0-9]*|0)$/; //定义验证整型数据的正则表达式。
//遍历页面上所有HTML对象
for(var i=0;i < document.all.length;i++)
{
//首先确定要验证的是text
if(document.all[i].type == "text")
{
var T_ID = document.all[i].id; //得到text的ID
var T_value = document.all[i].value; //得到text的值
//因为模板列SL生成的html的text的ID后面都是"_SL",所以我就判断所有文本框的ID最后三个字符为"_SL"的文本框的值
if(T_ID.substring(T_ID.length-3,T_ID.length)=="_SL" && T_value.length == 0)
{
alert("数据提交失败:您必须为每类物资填写到货数量!");
document.all[i].focus(); //使出错的文本框中的值处于被选中状态
return false;
}
if(T_ID.substring(T_ID.length-3,T_ID.length)=="_SL" && && reg.test(T_value)==false)
{
alert("数据提交失败:到货数量输入不符合规范!");
document.all[i].select(); //使出错的文本框中的值处于被选中状态
return false;
}
//其他文本框验证
return true;
}
}
}
..........................................................................................
但我生成HTML里面的文本框代码没有ID属性<INPUT value=长江实业 name=dgTest:_ctl2:_ctl1>
<INPUT value=长江实业 name=dgTest:_ctl2:_ctl2>
<INPUT value=长江实业 name=dgTest:_ctl3:_ctl1>第一个ctl2代表行,第二个ctl1代表列,如第一文本name=dgTest:_ctl2:_ctl1就代表第二行第一列的那个单元格
那么怎么修改上面脚本??我对脚本不是很熟,而且脚本调试也比较麻烦,希望各位能帮帮手!!!