Asp.net 如何对ListView EditTemplate中的控件使用javascript验证?
在网站中,我使用listview编辑模板进行编辑。在我的EditTemplate中,有如下控件Asp.net 如何对ListView EditTemplate中的控件使用javascript验证?,asp.net,c#-3.0,Asp.net,C# 3.0,在网站中,我使用listview编辑模板进行编辑。在我的EditTemplate中,有如下控件 <asp:TextBox ID="txtEditEventName" runat="server" Text='<%# Bind("event_name") %>' /> 还有一些控件,如下拉列表、日历控件。现在我想在这些控件上使用javascript进行验证,但它不起作用 例如 var eventStatus=docum
<asp:TextBox ID="txtEditEventName" runat="server"
Text='<%# Bind("event_name") %>' />
还有一些控件,如下拉列表、日历控件。现在我想在这些控件上使用javascript进行验证,但它不起作用
例如
var eventStatus=document.getElementById(“”)值;
我没有使用验证控件。请帮助我如何使用javascript对EditTemplate控件进行验证?我的EditTemplate结构如下所示:
<EditItemTemplate>
<td class="command"><asp:LinkButton ID="btnCancel" runat="server" Text="Cancel" CommandName="Cancel" />
<asp:LinkButton ID="LinkButton2" runat="server" Text="Update" CommandName="Update" />
</td>
<div class="header">View Details for '<%# Eval("event_name")%>'</div>
<tr>
<td class="edit" colspan="6" >
<div class="details">
<table class="detailview" cellpadding="0" cellspacing="0">
<tr>
<td>Event Name:</td>
<td>
<asp:TextBox ID="txtEditEventName" runat="server"
Text='<%# Bind("event_name") %>' />
</td>
<td>VenueAddress :</td>
<td>
<asp:TextBox ID="txtEditVenue" runat="server" Text='<%# Bind("venue") %>' />
</td>
</tr>
<tr>
<td>Country :</td>
<td>
<asp:DropDownList ID="lstEditCountry" runat="server"
Width="174" />
</td>
<td>Event Status:</td>
<td>
<asp:DropDownList ID="lstEditStatus" runat="server" Width="175px" >
<asp:ListItem value='0' Selected="True">-Select-</asp:ListItem>
<asp:ListItem >In-Progress</asp:ListItem>
<asp:ListItem >Completed</asp:ListItem>
<asp:ListItem >Aborted</asp:ListItem>
</asp:DropDownList>
</td>
</tr>
<tr>
<td>Category :</td>
<td>
<asp:DropDownList ID="lstEditCategory" runat="server"
Width="174" />
</td>
</tr>
<tr>
<td>Start Date:</td>
<td>
<asp:TextBox ID="txtEditStartDate" runat="server"
Text='<%# Bind("start_date", "{0:dd/MM/yyyy}") %>' />
</td>
<td>End Date:</td>
<td>
<asp:TextBox ID="txtEditEndDate" runat="server"
Text='<%# Bind("end_date","{0:dd/MM/yyyy}") %>' />
</td>
</tr>
</table>
<div class="footer command">
<asp:LinkButton ID="LinkButton1" runat="server" Text="Close" CommandName="Cancel" />
</div>
</div>
</td>
</tr>
</EditItemTemplate>
查看'的详细信息'
事件名称:
地址:
国家:
事件状态:
-挑选-
进行中
完整的
流产
类别:
开始日期:
结束日期:
您可以访问ItemDataBound
上的元素,并发出它们的clientid
供JavaScript使用:
ItemDataBound:
protected void ListView1_ItemDataBound(object sender, ListViewItemEventArgs e)
{
StringBuilder vars= new StringBuilder();
if (ListView1.EditItem != null)
{
TextBox txtEditStartDate = ListView1.EditItem.FindControl("txtEditStartDate") as TextBox;
TextBox txtEditEndDate = ListView1.EditItem.FindControl("txtEditEndDate") as TextBox;
//example js, however I recommend passing the ClientIDs to functions
vars.Append(String.Format("var txtEditStartDate='{0}';" txtEditStartDate.ClientID);
vars.Append(String.Format("var txtEditStartDate='{0}';", txtEditEndDate.ClientID );
ClientScriptManager.RegisterStartUpScript(this.GetType(), "validationVars", vars.ToString(), true);
}
}
<asp:TextBox ID="txtEditEventName" runat="server"
Text='<%# Bind("event_name") %>' />
<asp:RequiredFieldValidator
id="rfvEditEventName"
ClientValidationFunction="txtEditEventNameClientValidate"
ControlToValidate="txtTitle"
runat="server"
Display="dynamic">*
</asp:RequiredFieldValidator>
function txtEditEventNameClientValidate(sender, args) {
if (args.Value == '') {
args.IsValid = false; // field is empty
//so something
}
else {
//do something
}
}
***旧答案,.NET方式************ 编辑模板:
protected void ListView1_ItemDataBound(object sender, ListViewItemEventArgs e)
{
StringBuilder vars= new StringBuilder();
if (ListView1.EditItem != null)
{
TextBox txtEditStartDate = ListView1.EditItem.FindControl("txtEditStartDate") as TextBox;
TextBox txtEditEndDate = ListView1.EditItem.FindControl("txtEditEndDate") as TextBox;
//example js, however I recommend passing the ClientIDs to functions
vars.Append(String.Format("var txtEditStartDate='{0}';" txtEditStartDate.ClientID);
vars.Append(String.Format("var txtEditStartDate='{0}';", txtEditEndDate.ClientID );
ClientScriptManager.RegisterStartUpScript(this.GetType(), "validationVars", vars.ToString(), true);
}
}
<asp:TextBox ID="txtEditEventName" runat="server"
Text='<%# Bind("event_name") %>' />
<asp:RequiredFieldValidator
id="rfvEditEventName"
ClientValidationFunction="txtEditEventNameClientValidate"
ControlToValidate="txtTitle"
runat="server"
Display="dynamic">*
</asp:RequiredFieldValidator>
function txtEditEventNameClientValidate(sender, args) {
if (args.Value == '') {
args.IsValid = false; // field is empty
//so something
}
else {
//do something
}
}
将验证javascript放入EditTemplate本身。这样,当它切换到编辑模式时,控件将处于上下文中。我们需要更多的内容来为您提供验证值的工作代码。为我们提供完整的EditTemplateThanksss标记。。。我只想要javascript。我使用了var v=$(“#”);但这表明错误并不存在。。请帮助我………请参阅更新,添加了另一种将ClientID传递到客户端的方法。对于错误,很抱歉,.NET方式代码中的那一行不应该在那里,我已将其删除。先生,我编辑了类似StringBuilder vars=new StringBuilder()的代码;Append(String.Format(“var-txtEditStartDate='{0}';”,listCat.ClientID));Page.ClientScript.RegisterStartupScript(this.GetType(),“validationVars”,vars.ToString(),true);现在,如何在客户端检索这些值……它们将是全局js变量(txtEditStartDate和txtEditStartDate)。尝试在您的验证函数中提醒他们。我将javascript代码放入editTemplate中,但它给出了相同的错误。我没有在javascript中找到用于验证的editTemplate控件。