ラジオボタン列のあるテーブルがあります。ラジオボタン列をセルに動的に挿入して機能させることができました(問題がある場合はdiv)。ただし、ポストバックでは、innerHtmlは「checked」属性で更新されていません。
ラジオボタンがチェックされているかどうかを(サーバー上で)確認するにはどうすればよいですか?
詳細:これは、更新パネル内のユーザーコントロールにあります。
これは私のトピックに関する良い投稿ですが、それでも役に立ちません
ラジオボタン列のあるテーブルがあります。ラジオボタン列をセルに動的に挿入して機能させることができました(問題がある場合はdiv)。ただし、ポストバックでは、innerHtmlは「checked」属性で更新されていません。
ラジオボタンがチェックされているかどうかを(サーバー上で)確認するにはどうすればよいですか?
詳細:これは、更新パネル内のユーザーコントロールにあります。
これは私のトピックに関する良い投稿ですが、それでも役に立ちません
これが実際の例です。最初に、リンクした方法でWebフォームにラジオを追加します。
function addRadio()
{
try{
rdo = document.createElement('<input type="radio" name="fldID" />');
}catch(err){
rdo = document.createElement('input');
}
rdo.setAttribute('type','radio');
rdo.setAttribute('name','fldID');
document.getElementById('container').appendChild(rdo);
}
次に、コードビハインドで、以下のコードのみを使用してラジオの値を取得しました。
string value = Request["fldID"];
したがって、サーバー側のラジオボタンの名前を取得しようとしていることを確認してください。IDではなく、サーバー側でname属性を使用する必要があります。
標準の asp:RadioButton を使用できず、javascript を使用して相互に排他的であることを確認する理由はありません。ラジオボタンにカスタム属性を追加し、js関数を使用してその属性を持つすべてのアイテムのチェックを外してから、選択したアイテムをチェックすることで、これを以前に行いました。これにより、グループ名属性が異なるコンテナにあるラジオボックスで機能しないという IE の問題が回避されます。
radioButton.InputAttributes.Add("ClientGroupName", "grpRadioList");
radioButton.InputAttributes.Add("onclick",
string.Format(
"javascript:radiobuttonToggle('{0}','ClientGroupName','grpRadioList');"
,radioButton.ClientID));
次の JS を使用してすべてのラジオのチェックを外し、必要なラジオをチェックします。ラジオボタンがスパンタグ内にラップされているため、属性の代わりにInputAttributesを使用したことに注意してください。そのため、InputAttributesは、スパンではなく実際の入力コントロールに追加された項目用です。
function radiobuttonToggle(selectedRB, attribName, attribValue)
{
var objRadio = document.getElementById(selectedRB);
for(i = 0; i < document.forms[0].elements.length; i++)
{
elm = document.forms[0].elements[i];
if (elm.type == 'radio')
{
if(elm.getAttribute(attribName) == attribValue)
elm.checked = false;
}
}
objRadio.checked = true;
}
その後、radioButton.Checked を CS ファイルのプロパティとして公開し、これをコントロールとして再利用できます。
小切手Form.Request("radio-name") != null
チェックされている場合にのみ、null 以外の値を取得します。
ポストバック時にページ要素が正しく再構築されていることを確認してください。最初にラジオ ボタンを挿入したバインド プロセスは、2 回目にアクセスする前に再実行する必要があります。