2011-10-28 7 views
2

Nridubaiウェブサイトでは、編集目的でlistview EditTemplateを使用しています。私のEditTemplateには、次のようなコントロールがあります。ListView EditTemplate内のコントロールのjavascript検証を使用する方法?

<asp:TextBox ID="txtEditEventName" runat="server" 
         Text='<%# Bind("event_name") %>' /> 

さらに、ドロップダウンリスト、カレンダーコントロールなどのコントロールがいくつかあります。今私は、これらのコントロールでjavascriptを使用して検証するが、その動作しません。

例:

var eventStatus=document.getElementById("<%=txtEditEventName.ClientID%>").value; 

私は検証コントロールを使用していません。 EditTemplateコントロールで検証のためにJavaScriptを使用する方法を教えてください。マイ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> 
+0

値を検証するための作業コードを提供するには、それ以上のものが必要です。 edittemplateの完全なマークアップを提供してください – Deeptechtons

答えて

1

あなたはItemDataBound上の要素にアクセスし、そのClientIDs使いのブラウザでは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); 
    } 
} 

** * *旧回答、.NETの道** ** ** ** * **

EditTemplate:

<asp:TextBox ID="txtEditEventName" runat="server" 
         Text='<%# Bind("event_name") %>' /> 
<asp:RequiredFieldValidator 
        id="rfvEditEventName" 
        ClientValidationFunction="txtEditEventNameClientValidate"  
        ControlToValidate="txtTitle" 
        runat="server"  
        Display="dynamic">* 
        </asp:RequiredFieldValidator> 

JS:

function txtEditEventNameClientValidate(sender, args) { 
    if (args.Value == '') { 
     args.IsValid = false; // field is empty  
     //so something 
    } 
    else { 
     //do something 
    } 
} 
+0

Thankssss ...私は唯一のjavascriptが欲しいです。私はvar v = $( '#<%= txtEditEventName.ClientID%>')を使用しました。しかし、それはエラーdoesnot Existsを示しています。私に助けてください......... –

+0

クライアント側にClientIDを渡す別の方法を追加しました。 –

+0

エラーについて申し訳ありませんが、.NETのコードの行がそこにあってはならないはずです。削除しました。 –

0

EditTemplate自体に検証javascriptを入れてください。このようにして、編集モードに切り替えると、コントロールはコンテキストになります。

+0

私はeditTemplateにjavascriptコードを入れましたが、同じエラーが出ます。 –

+0

正確なエラーは何ですか? –

+0

私は検証のためにjavascriptでEdittemplateコントロールを見つけられません。 –

関連する問題