to:--思归,孟子E章...等高手能手们,关于模板列中控件加验证控件和控件的TAB顺序的问题,不够可追加分!!!

mingjunr 2003-09-25 11:09:27
1.我想给模板列中的Textbox加上验证控件,但不知道怎么加!希望给出详细说明
2.关于模板列中控件的TAB键控件顺序问题,我的datagrid有10行10列,我按顺序加上 tabindex,但按tab键它却是一列一列的走,而不是一行一行的走,怎么办?

请高手们指点一下,分可以再加,小生这厢有礼了,呵呵
...全文
40 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
goody9807 2003-09-25
  • 打赏
  • 举报
回复
不能给模板列中的Textbox验证 ,只能用语句写
cnhgj 2003-09-25
  • 打赏
  • 举报
回复
在模板列中加验证控件没搞过,你可以试试用js验证一下
假设你的ID为text1
var inp = document.all.tags("input");
for (var i=0;i<inp.length;i++)
{
if (inp[i].id.subString(0,5) == "text1")
{
if (inp[i].value == "")
{
alert("不能为空");
inp[i].focus();
return false;
}
}
}
mmkk 2003-09-25
  • 打赏
  • 举报
回复
tabindex的问题不是非常清楚,但是你可以参考一下帮助:
WebControl.TabIndex
mmkk 2003-09-25
  • 打赏
  • 举报
回复
Full Feature Example:
http://www.dotnetjunkies.com/Tutorial/ShowContent.aspx?cg=b8550e4b-b8f5-4446-b065-0b19f4c739bc&forumid=4820
webdiyer 2003-09-25
  • 打赏
  • 举报
回复
写了一个示例文件,说明如何在DataGrid的编辑模板中加入验证控件来对用户输入的数据进行验证,请将下列代码保存为 test.aspx 后运行,当点击编辑按钮后,如果姓名、地址或生日列输入了空值,或者生日列的日期格式不正确,验证控件将显示提示信息,并阻止数据提交:


<%@Import Namespace="System.Data"%>
<script language="C#" runat="server">

void Page_Load(object src,EventArgs e){
if(!Page.IsPostBack)
BindData();
}

void BindData(){
DataTable table=new DataTable();
DataColumn col=new DataColumn("id",typeof(int));
table.Columns.Add(col);
col=new DataColumn("name",typeof(string));
table.Columns.Add(col);
col=new DataColumn("address",typeof(string));
table.Columns.Add(col);
col=new DataColumn("birthday",typeof(DateTime));
table.Columns.Add(col);
DataRow row;
for(int i=0;i<15;i++){
row=table.NewRow();
row.ItemArray=new object[4]{i,"name "+i.ToString(),"address "+i.ToString(),DateTime.Today.AddDays(i)};
table.Rows.Add(row);
}
grid1.DataSource=table;
grid1.DataBind();
}

void EditGrid(object src,DataGridCommandEventArgs e){
grid1.EditItemIndex=e.Item.ItemIndex;
BindData();
}

void CancelEdit(object src,DataGridCommandEventArgs e){
grid1.EditItemIndex=-1;
BindData();
}

void UpdateData(object src,DataGridCommandEventArgs e){
//仅做演示用,并不更新数据
grid1.EditItemIndex=-1;
BindData();
}

void grid1_ItemDataBound(object src,DataGridItemEventArgs e){
if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem){
//将“编辑”按钮的 CausesValidation 属性设为false,点编辑按钮时,不启用验证
LinkButton btn=(LinkButton)e.Item.Cells[4].Controls[0];
btn.CausesValidation=false;
}
else if(e.Item.ItemType==ListItemType.EditItem){
//将“取消”按钮的 CausesValidation 属性设为false,点取消按钮时,不启用验证
LinkButton btn=(LinkButton)e.Item.Cells[4].Controls[2];
btn.CausesValidation=false;
}
}
</script>
<HTML><HEAD>
<TITLE> 欢迎光临www.webdiyer.com </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="Webdiyer">
</HEAD><BODY>
<form runat="server">
<asp:DataGrid runat="server" id="grid1" OnEditCommand="EditGrid" OnCancelCommand="CancelEdit" OnUpdateCommand="UpdateData" AutoGenerateColumns=false OnItemDataBound="grid1_ItemDataBound">
<Columns>
<asp:BoundColumn DataField="id" ReadOnly=true HeaderText="编号"/>
<asp:TemplateColumn HeaderText="姓名">
<ItemTemplate>
<%#DataBinder.Eval(Container.DataItem,"name")%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" id="namebox" width="80" Text='<%#DataBinder.Eval(Container.DataItem,"name")%>'/>
<asp:RequiredFieldValidator runat="server" ErrorMessage="姓名不能为空" ControlToValidate="namebox" Display="None"/>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="地址">
<ItemTemplate>
<%#DataBinder.Eval(Container.DataItem,"address")%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" id="addrbox" Text='<%#DataBinder.Eval(Container.DataItem,"address")%>'/>
<asp:RequiredFieldValidator runat="server" ErrorMessage="地址不能为空" ControlToValidate="addrbox" Display="None"/>
</EditItemTemplate>
</asp:TemplateColumn>

<asp:TemplateColumn HeaderText="生日">
<ItemTemplate>
<%#DataBinder.Eval(Container.DataItem,"birthday","{0:d}")%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" id="birthbox" Text='<%#DataBinder.Eval(Container.DataItem,"birthday","{0:d}")%>'/>
<asp:RequiredFieldValidator runat="server" ControlToValidate="birthbox" ErrorMessage="生日不能为空" Display="None"/>
<asp:CompareValidator runat="server" ControlToValidate="birthbox" ErrorMessage="生日格式错误" Operator="DataTypeCheck" Type="Date" Display="None"/>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:EditCommandColumn HeaderText="编辑" EditText="编辑" CancelText="取消" UpdateText="更新"/>
</Columns>
</asp:DataGrid>
<asp:ValidationSummary ShowMessageBox="true" ShowSummary="false" HeaderText="无法更新数据,错误原因:" runat="server"/>
</form></BODY></HTML>
asam2183 2003-09-25
  • 打赏
  • 举报
回复
不加tabindex,它是先上到下,左到右
asam2183 2003-09-25
  • 打赏
  • 举报
回复
<asp:TemplateColumn HeaderText="开始时间"> <ItemTemplate> <asp:TextBox id="txt1" runat="server" CssClass="main"></asp:TextBox>
<asp:regularexpressionvalidator id="vldRngtxt1" runat="server" CssClass="main" Display="Dynamic" ControlToValidate="txt1" ErrorMessage="请输入正确的开始时间,00:00:00~23:59:00之间" ValidationExpression="^(0\d{1}|1\d{1}|2[0-3]):[0-5]\d{1}:([0-5]\d{1})$">*</asp:regularexpressionvalidator> </ItemTemplate>
</asp:TemplateColumn>
jjcccc 2003-09-25
  • 打赏
  • 举报
回复
最好是设置每列的tabindex都设为0;这样就会自动按顺序走的。就象 guoyan19811021(吉祥) 说的那样。
jjcccc 2003-09-25
  • 打赏
  • 举报
回复
模板列中控件的TAB键控件顺序问题==>
不能简单的设置这里tabindex,因为这样就使每行的每列的控件的tabindex都是一样了,如第一列的每行上的TextBox的tabindex都会是0(假设你设的是0的话)。所以如果你想自己控制tabindex的话,则必须用代码动态生成tabindex,可以让每行的tabindex=rowIndex+0,1,2..这样就不会就你的问题了(代码可以卸载ItemBound事件中)
guoyan19811021 2003-09-25
  • 打赏
  • 举报
回复
我在模板列加入textbox,没有设置tab顺序,但它好像默认是先横排,后竖排的
guoyan19811021 2003-09-25
  • 打赏
  • 举报
回复
没搞过!

我试试
jackyhzzjcn 2003-09-25
  • 打赏
  • 举报
回复
这个到没用过,呵呵。

直接加估计有点困难,试试在后台OnItemCreated下动态增加。

62,047

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧