こんばんは。
私もいろいろ試してみたのですが、viewPanel(ビューコントロール)の中の viewColumn(ビューの列)が持っているチェックボックスの挙動をカスタマイズするのは難しいように思います。試しにクライアントサイド JavaScript で viewColumn のチェックボックス INPUT フィールドの value 値を無理やり変更してみたのですが、無理やり値を変更したチェックボックスのある行は選択しても選択したと認識されず、getSelectedIds() 関数の戻り値に含まれなくなってしまいました。
もし、getSelectedIds() 関数の戻り値の NoteID 配列に対してループをまわして Notes 文書をそれぞれ取得し値を再計算する、という重い処理を避けたいという意図でしたら、例えば viewPanel の viewColumn の計算時に、行を選択したときに戻して欲しい値をあらかじめ計算しておき、セッションスコープなどに保持しておくというのはいかがでしょうか?
以下コード例です。まず beforePageLoad などのイベントで、セッションスコープに checkboxValueMap という値保持用のオブジェクトを作っておきます。(すでにある場合は再利用)
<xp:this.beforePageLoad>
<![CDATA[#{javascript:sessionScope.checkboxValueMap = sessionScope.checkboxValueMap || {};}]]>
</xp:this.beforePageLoad>
次に、viewPanel のチェックボックスのある viewColumn の value の計算時に、行を選択したときに戻して欲しい値を計算し、セッションスコープの checkboxValueMap に NoteID と紐付けて保存しておきます。この例では LastName 列と FirstName 列の値を元に FullName 値を計算して保持しています。(またこの例では、チェックボックスの viewColumn には何も値を表示しないようにするために、最後に return で空文字を返しています。)
<xp:viewPanel rows="30" id="viewPanel1" showColumnHeader="true" var="viewEntry">
<xp:viewColumn id="viewColumn1" showCheckbox="true">
<xp:this.facets>
<xp:viewColumnHeader xp:key="header"
id="viewColumnHeader1" showCheckbox="true">
</xp:viewColumnHeader>
</xp:this.facets>
<xp:this.value><![CDATA[#{javascript:var noteId = viewEntry.getNoteID();
sessionScope.checkboxValueMap[noteId] = viewEntry.getColumnValue("LastName") + " " + viewEntry.getColumnValue("FirstName");
return "";}]]></xp:this.value>
</xp:viewColumn>
そして最後に、ボタンなどを押した際などの eventHandler の中で、getSelectedIds() 関数の戻り値の NoteID 配列からループをまわすのですが、NoteID を元に文書を取得して、、、という処理をおこなう代わりに、セッションスコープの checkboxValueMap からあらかじめ計算しておいた値を取得するようにします。(ここでは print() で値をコンソールに出力しているだけです)
<xp:button value="Submit" id="button1">
<xp:eventHandler event="onclick" submit="true" refreshMode="complete">
<xp:this.action><![CDATA[#{javascript:var ids = getComponent("viewPanel1").getSelectedIds();
for(var i=0; i<ids.length; i++){
print(ids[i] + ": " + sessionScope.checkboxValueMap[ids[i]]);
}}]]></xp:this.action>
</xp:eventHandler>
</xp:button>
こうすることで、getSelectedIds() の戻り値の NoteID を元に getDocumentByID() をしてそれぞれ Notes 文書を取得して値を計算しなおす、という処理は不要になるので、少し処理は軽くおさえることができるかもしれません。(メモリ消費は若干増えますが)