私は少し損失があります。私たちはasp.net Questionaireを持っており、ビジネスルールとSQLのデータに基づいて動的に作成されています。ダイナミックコントロールがたくさんあるASP.NETページのJQuery
ダイナミックテーブルであるquestionaireは、最大21の質問を持つことができ、応答(ラジオボタンはい、いいえ、進行中、なし)とより多くのビジネスルールに基づいて、さまざまなことが起こる必要があります。
追加の質問が右側の列に表示される場合や、ユーザーが追加データを入力する必要があるテキストボックスがある場合があります。応答の説明が必要なコメントが必要な場合があります。また、応答。
これは、JavaScriptの悪夢になっています。現在、各ラジオボタンにonclickイベントを追加し、そのラジオボタンに適用されるいくつかのビジネスルールを渡しています。
私がもっている最大の問題は、行番号、応答などに基づいてすべてのコントロールにidsが与えられることです。したがって、javascript関数では、必要なコントロールのIDを情報に基づいてまとめようとしていますonclickイベントの関数に渡されます。
私たちは動作していますが、それほどエレガントではなく、メンテナンスの悪夢になる可能性が高いコードです。それは私にはJQueryを使うより良い方法がなければならないようです。どこから始めたらいいのかわかりません。私はこれが意味をなさないことを願っています。誰かがこの混乱を書き直すのに使うことができるこのようなものの示唆またはサンプルを持っていることを願っています。
ここでは非常に非常に短縮版のjavascriptです。
function radioButtonListOnClick1(buttonValue, QuestionNumber, hasInput, hasSubs, hasAdditional, isAdditional)
{
var ClientID;
var HidField = $("#HiddenFieldClientID");
if (HidField.length == 1)
{
ClientID = HidField[0].value + "_";
}
var ColumnName = ClientID + "radioQuestionColumn" + QuestionNumber;
if (buttonValue == "InProgress")
{
document.getElementById(ColumnName).className = 'tdInProgress';
}
if ((buttonValue == "Yes") || (buttonValue == "NotApplicable"))
{
document.getElementById(ColumnName).className = 'tdYes';
}
if (buttonValue == "No")
{
document.getElementById(ColumnName).className = 'tdNo';
}
}
listItem.Attributes.Add("onclick", "radioButtonListOnClick('" + Response + "', '" + QuestionNumber + "', '" + hasInput + "', '" + hasSubs + "', '" + hasAdditional + "', 'no');");
ここでは、さまざまな応答のルールのような質問の例を示します。
1)あなたの不在時にあなたのために記入できる代替ユーザーの名前がありますか? yes - テキストボックスとテキストを表示します - 「従業員の名前を入力してください」(列の色は白) no - これがなぜ必要か、誰を選ぶべきかを説明するSharepoint文書へのリンクを表示します(列の色は赤です) 進行中 - 列の色は黄色です