どのようにリストビューのEditTemplate内のコントロールのjavascript検証を使用するには?

Nridubai ウェブサイトでは、編集目的でlistview EditTemplateを使用しています。私のEditTemplateには、..のようなコントロールがあります


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

例えば。

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

私は検証コントロールを使用していません。 EditTemplateコントロールで検証のためにJavaScriptを使用する方法を教えてください。私のEditTemplate構造は次のようになります:


                                        <td class="command">
                                        
                                        </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>
                    
                </td>
                 <td>VenueAddress :</td>
                <td>
                    
                </td>

                </tr>


                <tr>

                <td>Country :</td>
                <td>

                    



                </td>


                <td>Event Status:</td>
                <td>
                
                                        -Select-

 In-Progress
Completed
Aborted

  

                </td>


                </tr>
                <tr>
                <td>Category :</td>
                <td>
                       
                </td>
                </tr>
                 <tr>
                <td>Start Date:</td>
                <td>
                    
                </td>
                <td>End Date:</td>
                <td>
                    
                </td>


                </tr>






                                                </table>
                                               <div class="footer command">
                                                
                                                </div>
                                            </div>
                                        </td>
                                    </tr>
                            
2
値を検証するための作業コードを提供するには、それ以上のものが必要です。 edittemplateの完全なマークアップを提供する
追加された 著者 Deeptechtons,

2 答え

ItemDataBound の要素にアクセスし、使用するJavaScriptの ClientIDs を出力できます。

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);
    }
}

***Old Answer, the .NET way************

EditTemplate:


*
                    

JS:

function txtEditEventNameClientValidate(sender, args) { 
    if (args.Value == '') {
        args.IsValid = false; //field is empty      
        //so something
    } 
    else {
        //do something
    }
}
1
追加された
Thankssss ...私はジャバスクリプトが欲しい。私はvar v = $( '#<%= txtEditEventName.ClientID%>')を使用しました。しかし、それはエラーdoesnot Existsを示しています..助けてください.........
追加された 著者 Uday Satardekar,
Sir i StringBuilderのようなコードを編集します。vars = new StringBuilder(); vars.Append(String.Format( "var txtEditStartDate = '{0}';"、listCat.ClientID)); Page.ClientScript.RegisterStartupScript(this.GetType()、 "validationVars"、vars.ToString()、true);今クライアント側でこれらの値を取得する方法......
追加された 著者 Uday Satardekar,
私はこの2つのglobalVariable(txtEditStartDateとtxtEditStartDate)を取得しようとしました.ItはEditTemplateのLinkBut​​ton OnItemUpdatingイベントでそのコードを動作させていないときに通常のbutton.butでうまく動作します。 EX vars.Append(String.Format( "var txtEditStartDate12 = '{0}';"、 "CRm"));私はテストするために文字列を渡した。
追加された 著者 Uday Satardekar,
更新を参照し、ClientIDをクライアント側に渡す別の方法を追加しました。
追加された 著者 rick schott,
エラーについて申し訳ありませんが、.NETのコードの行がそこにあってはならないはずです。削除しました。
追加された 著者 rick schott,
それらはグローバルjs変数(txtEditStartDateおよびtxtEditStartDate)になります。検証機能で警告を出してください。
追加された 著者 rick schott,

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

0
追加された
正確なエラーは何ですか?
追加された 著者 Brian Mains,
私はeditTemplateにjavascriptコードを入れましたが、同じエラーが出ます。
追加された 著者 Uday Satardekar,
私は検証のためにjavascriptでEdittemplateコントロールを見つけられません。
追加された 著者 Uday Satardekar,