Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何对ListView EditTemplate中的控件使用javascript验证?_Asp.net_C# 3.0 - Fatal编程技术网

Asp.net 如何对ListView EditTemplate中的控件使用javascript验证?

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

在网站中,我使用listview编辑模板进行编辑。在我的EditTemplate中,有如下控件

<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 &#39;<%# Eval("event_name")%>&#39;</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控件。