2006年03月03日

ライブラリのパス

 URLネタをもう1つ。 ライブラリのフォルダのパスについてです。
ドキュメントライブラリ、画像ライブラリ、フォームライブラリなどはフォルダが作成出来ますが、フォルダ階層を開いてアクセスした先の URL は凄く長くなっています。 これは、フォルダ階層部分をクエリーストリングのパラメータに展開されていることと、2バイト文字が含まれていると正規化 UTF-8 でエンコードされているからです。
2バイト文字1文字は正規化 UTF-8 でエンコードされると9文字になります。 (うげげ・・・)

・SharePoint Portal Server 2001 で、2 バイト文字コードを使用する場合の注意事項について
<http://www.microsoft.com/japan/sharepoint/server/support/dbcs.asp>
以前のバージョンに関する情報ですが、最初の方に、正規化 UTF-8 に関する説明があります。

ちょっと判り易い名前のフォルダ名階層を作ってしまうと簡単に URL が長くなります。 こんな時に、困るのはリストの「ハイパーリンクまたは画像」の列の文字列長制限です。
これを回避するアプローチとして、以下のようなものが考えられます。
  • URL内のパラメータの削除
    後ろの方に &View= が含まれている場合は、& 以降を削除する。 ビューを指定する必要が無い場合は削除しても問題無いです。
  • ドキュメントライブラリのフォルダ名を1バイト文字化
    単に2バイト文字の利用を止めるということです。 ちょっと安易ですが、確実な方法です。
  • 物理パスでアクセス
    ライブラリのフォルダは、実際には http://サーバー名/sites/サイトID/Shared%20Documents/フォルダ/サブフォルダ/ のような URL でもアクセス可能です。 この場合、クエリーストリングのパラメータではないので、漢字のままでも大丈夫です。
最後のアプローチが最も有効でしょうか・・・ 但し、URL を自分で展開しなくてはならないので、それがちょっと面倒です。

posted by kunitaka at 03:30| Comment(2) | TrackBack(0) | テクニック
この記事へのコメント
いつも拝見させて頂き、勉強させて頂いております。
ただいま、問題を抱えております。

その内容は、特定のリストの個人用ビューを作成する為のWebPartを作成しました。
ボタンをクリックで作成されます。
現在、管理者権限では、成功しているのですが
閲覧者や投稿者に「個人用ビューの管理」権限を割り振っているのにも関わらず
リソースへの権限が不足しているとエラーが表示されてしまいます。

管理ページから個人用ビューの追加を行うことは出来るのに
なぜ、コードからだと出来ないのか思案し、試行錯誤を試みたのですが
出来ませんでした。

妙案がありませんでしょうか?
何卒宜しくお願い致します。


private void btn_Click(object sender, EventArgs e)
{
SPWeb web = SPControl.GetContextWeb(this.Context);
SPList list = web.Lists[ListName];

list.Views.Add( ViewName, StringCollection, Query, 100, true, false, SPViewCollection.SPViewType.Html, true);
}

Posted by 大垣 at 2006年11月30日 22:24
亀レスで、すみません。
このWebパーツは、どこに組み込まれているのでしょうか?
Posted by kunitaka at 2006年12月13日 00:58
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/428394
※ブログオーナーが承認したトラックバックのみ表示されます。
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック