高分请教关于DataGrid的问题!!

heavensboy 2005-03-29 01:45:50
现在在一个页面上有一个DataGrid控件显示记录,下面的一个TextBox控件输入记录,页面上还有一个button控件作提交数据用。我现在有如下几个问题想要解决:
1、我为TextBox作了数据验证,就是当textbox里的数值为空时弹出错误提示框,这点没问题,但是问题出现在当修改datagrid里某条记录后再点击更新时,也要弹出这个错误提示框??
2、当点击DataGrid里某条记录的编辑这个链接时,相应的每个数据会变成文本输入框供我们修改,我该如何控制这些文本输入框的显示时格式、宽度??而且怎样对这些文本输入框的值进行客户端验证,比如其中有一个数据是日期格式的,我们在修改时不小心没有输入正确的格式,页面能弹出相应的错误提示框。
3、我如何为这些文本输入框添加我所需要的客户端的js代码?比如我想在点击一个要输入日期格式的文本框时调用梅花雨日历的js代码来显示一个日历按件??
...全文
159 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zipo 2005-03-30
  • 打赏
  • 举报
回复
1.处理不了,可以不用验证控件。用js写个判断!
2。在DataGrid中添加一个模板列,然后编辑模板列,在ItemTemplate中添加显示用的内容,比如用Label,再添加一个你需要的按纽(Button)或LinkButton,在EditItemTemplate中添加编辑用的内容,比如用TextBox,
然后给DataGrid的ItemCommand事件添加处理程序,更改DataGrid的EditItemIndex=e.Item.ItemIndex就可以了,根据Button或LinkButton的CommandName进行筛选,进行更新或删除或取消等的操作,内部的TextBox的值用(TextBox)e.Item.FindControl(控件名称)的方法取得。
3.梅花雨控件
老鹰40 2005-03-29
  • 打赏
  • 举报
回复
1.大概是在刷新页面时,TextBox的值没有被填回。试试用ViewState或其它的方法保留TextBox中的值。
2.如果你用“编辑模板”的话,在EditItemTemplate的单元格中加入你的验证控件就可以了。用代码实现也是一样的:
<EditItemTemplate>
<asp:TextBox id=txtIP Runat="server" Width="8em" Text='<%# DataBinder.Eval(Container.DataItem,"IP") %>'>
</asp:TextBox>
<asp:RequiredFieldValidator id="RequiredFieldValidator1" Runat="server" Text="必须填写" Display="Dynamic" ControlToValidate="txtIP"></asp:RequiredFieldValidator>
<asp:CustomValidator id="Customvalidator1" Runat="server" Text="格式错误" Display="Dynamic" ControlToValidate="txtIP" CientValidationFunction="CustomValidator_ClientValidate"></asp:CustomValidator>
</EditItemTemplate>


3.
lu_xiaolong 2005-03-29
  • 打赏
  • 举报
回复
第三个问题:
可以自已建一个继承自TextBox控件然后重写AddToAttribute方法
public class MyTextBox : System.Web.UI.WebControls.TextBox
{
protected override void AddAttributesToRender(HtmlTextWriter writer)
{
base.AddAttributesToRender (writer);
writer.AddAttribute(HtmlTextWriterAttribute.Onclick,"javascript:缺")
}
}
javascript我不太会写,希望大家把上面那段补齐
lu_xiaolong 2005-03-29
  • 打赏
  • 举报
回复
第2.1个问题:
在DataGrid中添加一个模板列,然后编辑模板列,在ItemTemplate中添加显示用的内容,比如用Label,再添加一个你需要的按纽(Button)或LinkButton,在EditItemTemplate中添加编辑用的内容,比如用TextBox,
然后给DataGrid的ItemCommand事件添加处理程序,更改DataGrid的EditItemIndex=e.Item.ItemIndex就可以了,根据Button或LinkButton的CommandName进行筛选,进行更新或删除或取消等的操作,内部的TextBox的值用(TextBox)e.Item.FindControl(控件名称)的方法取得
第2.2个问题
可以用一个RegularExpressionValidator控件(正则表达式验证控件),将它的ValidationExpression
设为“\d{4}-\d{1,2}-\d{1,2}”这样的值,就可以验证了,不过这个表达式不是很好,会有点漏洞,如果输入8888-88-88是会被验证通过的,我没有仔细想过怎么写,如果有人有好的表达式,希望分享
lu_xiaolong 2005-03-29
  • 打赏
  • 举报
回复
第一个问题:
验证控件的
Enabled
EnableClientScript
EnableViewState
属均设为false
private void Button1_Click(object sender, System.EventArgs e)
{this.RequiredFieldValidator1.Enabled=true;
this.Validate();
if(this.IsValid)
{
做你爱做的事;
}
}
不过这样会禁用客户端的验,成了服务器端验证了
hackate 2005-03-29
  • 打赏
  • 举报
回复
TextBox不好控制,不要用验证控件啊,比如用

If TextBox1.Text="" then
...写数据
Else
...文本框不能为空
End if

用这个多方便,简洁!

第二个问题,那个连接那个应该设置成摸班列。。

第三。你参考梅花雨那个控件的说明,使用就可以了,
heavensboy 2005-03-29
  • 打赏
  • 举报
回复
楼上三会好像都没解决我提的问题呀,说明白点,就是我怎样控制DataGrid控件里那些文本输入框,这些文本输入框在不发生DataGrid.OnCommandEdit事件时不会产生的呀,我想要的是在发生此事件时完全控制这些文本输入框,比如验证输入值,控制其显示的大小样式等?????
littlekeen 2005-03-29
  • 打赏
  • 举报
回复
1 TextBox的数据验证不使用验证控件,而是调用方法,应该可以解决你提交的问题了;
2 更新时,先判断相应的输入是否有效,有效才更新,无效的弹出对话框;
3 function check() //校验函数
<form id="Info" name="Info" onsubmit="javascript:return check();" action="next.aspx" method="post">
老汉 2005-03-29
  • 打赏
  • 举报
回复
唉,楼上正解。

偶就蹭一点了。
酋长 2005-03-29
  • 打赏
  • 举报
回复
1.处理不了,可以不用验证控件。
2.你都能取到值了,那做判断还不会吗?
3.var datagrid=document.all("datagrid");
然后对datagrid的行中控件做操作判断

62,266

社区成员

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

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

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

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