3

私は 3 つの共有ポイント サイトでこの問題を抱えていましたが、CSS コードを変更することでこの問題を解決することができました (参照http://social.msdn.microsoft.com/Forums/en-US/sharepoint2010general/thread/64796605-bcbb-4a87- 9d8d-9d609579577f/ ) のうちの 2 つ。

同じ更新、同じCSS、同じhtmlコードを持つ3番目のものでこれが機能しない理由がわかりません... indesign="true" を追加するなど、いくつかの解決策を試しました(これはリストには 75 列以上あります)。参照 http://www.codeproject.com/Articles/194254/Advanced-fixing-SharePoint-2010-large-lookup-dropd

私が見つけた唯一の解決策はjavascriptが必要でしたが、私は本当にそれを使いたくありません...

誰かが提案する別の解決策を持っているなら、私は本当に感謝しています.

編集: moontear のおかげで、かなり素晴らしいものを見つけました。スクリプトの先頭を次のように置き換えます: $(document).ready(function () {

$('.ms-lookuptypeintextbox').each(function(){
    OverrideDropDownList($(this).attr('title'));
});

// Main Function
function OverrideDropDownList(columnName) {
...

このようにして、スクリプトを含めるだけで、どの列に問題が発生したかは気にしません...

4

2 に答える 2

2

このスクリプトは、この問題を解決するのに非常に優れているようです...コメントをありがとうmoontear down.html

$(document).ready(function () {

$('.ms-lookuptypeintextbox').each(function(){
    OverrideDropDownList($(this).attr('title'));
});

// Main Function
function OverrideDropDownList(columnName) {

// Construct a drop down list object
var lookupDDL = new DropDownList(columnName);

// Do this only in complex mode...
if (lookupDDL.Type == "C") {

// Hide the text box and drop down arrow
lookupDDL.Obj.css('display', 'none');
lookupDDL.Obj.next("img").css('display', 'none');

// Construct the simple drop down field with change trigger
var tempDDLName = "tempDDLName_" + columnName;
if (lookupDDL.Obj.parent().find("select[ID='" + tempDDLName + "']").length == 0) {
lookupDDL.Obj.parent().append("<select name='" + tempDDLName + "' id='" + tempDDLName + "' title='" + tempDDLName + "'></select>");

lookupDDL.Obj.parent().find("select[ID='" + tempDDLName + "']").bind("change", function () {
updateOriginalField(columnName, tempDDLName);
});
}

// Get all the options
var splittedChoices = lookupDDL.Obj.attr('choices').split("|");

// get selected value
var hiddenVal = $('input[name=' + lookupDDL.Obj.attr("optHid") + ']').val();
if (hiddenVal == "0") {
hiddenVal = lookupDDL.Obj.attr("value")
}

// Replacing the drop down object with the simple drop down list
lookupDDL = new DropDownList(tempDDLName);

// Populate the drop down list
for (var i = 0; i < splittedChoices.length; i++) {
var optionVal = splittedChoices[i];
i++;
var optionId = splittedChoices[i];

var selected = (optionId == hiddenVal) ? " selected='selected'" : "";
lookupDDL.Obj.append("<option" + selected + " value='" + optionId + "'>" + optionVal + "</option>");
}
}
}

// method to update the original and hidden field.
function updateOriginalField(child, temp) {
var childSelect = new DropDownList(child);
var tempSelect = new DropDownList(temp);

// Set the text box
childSelect.Obj.attr("value", tempSelect.Obj.find("option:selected").val());

// Get Hidden ID
var hiddenId = childSelect.Obj.attr("optHid");

// Update the hidden variable
$('input[name=' + hiddenId + ']').val(tempSelect.Obj.find("option:selected").val());
}

// just to construct a drop down box object. Idea token from SPServces
function DropDownList(colName) {
// Simple - when they are less than 20 items
if ((this.Obj = $("select[Title='" + colName + "']")).html() != null) {
this.Type = "S";
// Compound - when they are more than 20 items
} else if ((this.Obj = $("input[Title='" + colName + "']")).html() != null) {
this.Type = "C";
// Multi-select: This will find the multi-select column control on English and most other languages sites where the Title looks like 'Column Name possible values'
} else if ((this.Obj = $("select[ID$='SelectCandidate'][Title^='" + colName + " ']")).html() != null) {
this.Type = "M";
// Multi-select: This will find the multi-select column control on a Russian site (and perhaps others) where the Title looks like '????????? ????????: Column Name'
} else if ((this.Obj = $("select[ID$='SelectCandidate'][Title$=': " + colName + "']")).html() != null) {
this.Type = "M";
} else
this.Type = null;
} // End of function dropdownCtl
});
于 2012-07-11T13:43:36.620 に答える
1

上記のソリューションのコードは優れていますが、2 つの大きな欠点があります。

1) Required Field Validators とうまく機能しない 2) SPServices を介した Cascading Dropdowns とうまく機能しない。

私はこれら 2 つの問題を修正し、解決策をここに 掲載しました。

于 2013-04-27T20:27:19.497 に答える