Sharepointページのすべての要素のクライアントIDが時々変更されます。
誰が、なぜ、それが変化するインスタンス上を教えてくださいでき???共有ポイントの要素のクライアントIDが変更されましたか?どうして?いつ?
答えて
jQueryのは素晴らしいです!これにより、クライアント側の開発がより迅速になります。 無数のプラグインは、ほぼあらゆるニーズに対応しています。 Asp.NETのウェブフォームで のjQueryを使用すると、 ネストされたサーバーコントロールを扱うときに悪化取得します。 ASP.NET マスターページを使用するとClientIDが追加されます。 JavaScriptのオブジェクトは次のようになります。 ctl00_m_g_aaf13d41_fc78_40be_81d5_2f40e534844f_txtName 上記の問題は、txtName要素を取得するには完全な「パス」を知る必要があることです。これは、以下の方法で使用してオブジェクトを取得するために参照するためにかなり 悪化です: のdocument.getElementById(「ctl00_m_g_aaf13d41_fc78_40be_81d5_2f40e534844f_txtNameを」); これは、一般的なASP.NETアプリケーションまたはSharePointで使用されるサーバーコントロールまたはWebパーツを開発する場合に大きな問題になります。 の完全パスがわからない場合は、上のパスをハードコードすることはできません。
幸いなことに、この問題を回避するには、いくつかの方法があります。特に3つありますが、私は言及します。最初は標準のJavaScriptメソッドに相当jQueryの です: のdocument.getElementById( "<% = txtName.ClinetID%> ");"); これは、使用してjQueryの中で行うことができます。 $(" #」を< %= txtName.ClinetID%> ");"); 2番目のjQueryメソッドはサーバータグを必要としません。このメソッドはすべてのタグを検索し、指定されたテキストの末尾に の要素を探します。このメソッドのjQueryコードを以下に示します。 $( "[id $ = '_ txtName']"); もちろん、上記の両方の方法には欠点があります。最初は高速ですが、サーバータグが必要です。それは速いですが、ちょうど乱雑に見えます。 また、外部スクリプトファイルでは機能しません。 2番目の 代替はクリーンですが、速度が遅くなる可能性があります。私が以前に言ったように、 いくつかの他の選択肢がありますが、これらの2つは自分自身を見つけるものです 最も使います。
第三の背後にあるC#コードでJavascriptを登録します。
Page.ClientScript.RegisterStartupScript(GetType(), "saveScript",
String.Format("function EnableSave(isDisabled)"+
"{{ var saveButton = document.getElementById(\"{0}\");"+
"saveButton.disabled=isDisabled;}}", btnSave.ClientID), true);
、私はControls.Add(後の平均)コントロールがロードされた後にこのスクリプトを呼び出すことを忘れないでください。 CreateChildControlsメソッドで webpartsを開発しています。
ページのソースで$( '入力[タイトル= "名前"]')
ルックとtitleプロパティの値を取得します - たびに動作します。
ListBox1.Attributes.Add("onmouseup",
"document.getElementById('" + base.ClientID + "_" + lbnFilter.ClientID + "').style.display='block';");
- 1. パーソナルビューの変更をパーソナライズしていない場合の変更 - 共有ポイント
- 2. jquery要素のIDが正しく変更されていません
- 3. 共有ポイントのポータルサイトからどのような共有ポイントのバージョンが実行されているのかわかりますか?
- 4. 共有要素変色して、ステータスとアクションバーの重複要素
- 5. フィールドを共有していないが、共有されている一意のIDを持つテーブルの結合
- 6. Google IDトークンの「サブ」クレームはクライアント間で共有されていますか?
- 7. リフレッシュトークンとクライアントIDの共有
- 8. アプリがShareItのようなapk共有によって共有されている場合、アプリのパッケージインストーラIDは変更されますか?
- 9. 共有要素の遷移のためのsharedElementビューの変更
- 10. リストがラケットの1つ以上の要素を共有しているかどうかをチェック
- 11. 共有ポイントでのページ要求の一意のID
- 12. ネストされた共有要素を使用したシーン遷移
- 13. 共有サービス:ExpressionChangedAfterItHasBeenCheckedError:チェックされた後に式が変更されました
- 14. SCSS:子の入力がチェックされているかどうかの要素のスタイルを変更します。
- 15. 要素のidはjqueryで変更されませんか?
- 16. GWTのid要素がセレンで毎回変更されています
- 17. iOS共有エクステンションのアプリアイコンが新しく変更されていません
- 18. .Net要素IDを変更します。
- 19. ユーザーグループに表示されないナビゲーションリンクの1つ - 共有ポイント
- 20. RPCがクライアント/サーバー間で共有されていてもRESTメソッドで共有されています
- 21. どうすればMainActivityからのフラグメントの要素を変更したいMainActivity.java
- 22. 共有ポイントのワークフローのDLLが見つかりません
- 23. テーブルの新しい値が共有されていますか?
- 24. 共有ポイント2013のワークフローを通じて人のリストによって項目が変更されているかどうかを確認する方法
- 25. jqueryの要素のidを変更しますか?
- 26. モバイル:他のアプリケーションのコンテンツ/要素へのアクセス/共有/変更
- 27. jquery - デバッグアラート後に要素のIDが見つかりました
- 28. JQueryは、複製された要素のIDを変更できませんか?
- 29. Alert.update()は共有ポイントでアクセスを拒否していますか?
- 30. SSISで共有ポイント(UNC)にファイルをエクスポート - アクセスが拒否されました。
この[質問] [1]をチェックすると、いくつかのアイデアが表示されます。 [1]:http:// stackoverflow。com/questions/1325687/sharepoint-textfield-clientid-changes – Shoban
私は自分の経験から、ClientIDが完全に動的であると仮定することが常に最良であることを発見しました。実際に私の経験でするのは難しいことではありません。 ClientIDをハードコーディングせずに問題を解決するのを手伝いたいのであれば、私はそれを手伝ってうれしいです。 – Servy