我在Datalist1里放置了一个TextBox模板列
已经实现了在对某行的TextBox输入数字后通过DataList1_ItemCommand()对数字进行验证现在的场景是这样的:
1.在A行的TextBox里入数字
2.鼠标点B行的TextBox,使A行的TextBox失去焦点从而调用DataList1_ItemCommand()启动验证
3.无论输入的数字是否正确,验证完毕后焦点始终会回到A行的TextBox上我希望第3步是这样的:
3.如果验证通过,则焦点保留在B行的TextBox上;验证失败则焦点回到A行的TextBox上
请高手赐教!
已经实现了在对某行的TextBox输入数字后通过DataList1_ItemCommand()对数字进行验证现在的场景是这样的:
1.在A行的TextBox里入数字
2.鼠标点B行的TextBox,使A行的TextBox失去焦点从而调用DataList1_ItemCommand()启动验证
3.无论输入的数字是否正确,验证完毕后焦点始终会回到A行的TextBox上我希望第3步是这样的:
3.如果验证通过,则焦点保留在B行的TextBox上;验证失败则焦点回到A行的TextBox上
请高手赐教!
---------------------------------------------------
<%@Page Language="C#"%>
<%@Import Namespace="System.Data"%><script runat="server">
void Page_Load(object src,EventArgs e){
if(!Page.IsPostBack){
BindData();
}
}void BindData(){
DataTable table=(DataTable)Cache["mytable"];
if(table==null){
table=new DataTable();
DataColumn column=new DataColumn("序号",typeof(int));
column.AutoIncrement=true;
column.AutoIncrementSeed=1;
column.Unique=true;
table.Columns.Add(column);
table.Columns.Add(new DataColumn("姓名",typeof(string)));
table.Columns.Add(new DataColumn("住址",typeof(string)));
table.Columns.Add(new DataColumn("分数",typeof(int)));
DataRow row=table.NewRow();
row["姓名"]="张三";
row["住址"]="陕西省吴旗县";
row["分数"]=22;
table.Rows.Add(row);
row=table.NewRow();
row["姓名"]="李四";
row["住址"]="陕西省延安市";
row["分数"]=26;
table.Rows.Add(row);
table.PrimaryKey=new DataColumn[]{column};
Cache["mytable"]=table;
}
dlist.DataSource=table;
dlist.DataBind();
}void BindDataItem(object src,DataListItemEventArgs e){
if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem){
TextBox box=e.Item.FindControl("txtbox") as TextBox;
LinkButton btn=e.Item.FindControl("btn") as LinkButton;
if(box!=null&&btn!=null){
box.Attributes.Add("onchange",this.GetPostBackEventReference(btn));
}
}
}void UpdateTable(object src,DataListCommandEventArgs e){
DataTable table=(DataTable)Cache["mytable"];
TextBox box=e.Item.FindControl("txtbox") as TextBox;
if(box!=null){
table.Rows[e.Item.ItemIndex]["分数"]=int.Parse(box.Text);
Cache["mytable"]=table;
BindData();
}
}
</script>
<HTML>
<HEAD>
<TITLE> Webdiyer制造:) </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="Webdiyer">
</HEAD><BODY>
<form runat="server">
<asp:DataList runat="server" id="dlist" OnItemDataBound="BindDataItem" onUpdateCommand="UpdateTable">
<ItemTemplate>
姓名:<%#DataBinder.Eval(Container.DataItem,"姓名")%>
分数:<asp:TextBox runat="server" id="txtbox" Text='<%#DataBinder.Eval(Container.DataItem,"分数")%>'/><br/>
<asp:LinkButton Text="Update" CommandName="Update" runat="server" id="btn" visible=false/>
</ItemTemplate>
</asp:DataList>
</form>
</BODY>
</HTML>
这一步我已经实现了,当然也是看了你在另外一个帖子的同样的回复后学会的 :P
我现在要解决的是TextBox的焦点切换问题
请你帮我想想
-----------------------------------为什么要通过DataList1_ItemCommand()对数字进行验证通过js验证多好啊 也不用刷新页面
100分的帖子如果有10个人回复,那么帖主在给分时
在没个回帖的TextBox输入分数时,要:
1.通过RegularExpressionValidator在客户端判断输入的东东是否有效
2.在DataList1_ItemCommand()中计算剩余分值来提示帖主可继续分配的分数