ここでは私はJavaScriptである:JavaScriptの何が問題なのですか? (C#/ ASP.NET)
<script type="text/javascript">
function onholdev(index) {
var chk = document.getElementById('<%=grdCons.Rows[' + index + '].FindControl("chkHold").ClientID %>');
var txt = document.getElementById('<%=grdCons.Rows[' + index + '].FindControl("txtReason").ClientID %>');
if (chk.checked == true) {
txt.disabled = false;
}
else {
txt.disabled = true;
txt.value = "";
}
}
</script>
'インデックス' 変数はそうのように、私のGridViewのRowDataBoundイベントから来ている:
CheckBox chkHold = ((CheckBox)e.Row.FindControl("chkHold"));
chkHold.Attributes.Add("onchange", "onholdev(" + e.Row.RowIndex + ")");
しかし、私は私の関数の最初の行(var chkで始まる)の '文字列リテラルにあまりにも多くの文字を取得する'。どうしてこれなの?
を - 彼は、出力にかなりの唯一の方法であるコントロールのクライアントIDをサーバ側を使用していますASP.Netが半無作為にそれらを生成するのでIdを得るために。生成されたjavascriptは 'var chk = document.getElementById( 'chk_0000001');'のようになります。あなたができる場合は、私はそれを試してすべてのサーバー側を維持する方が良いと同意しました – Basic
@Basiclife - それは正しくない、関数を見て、 'index'は渡されるパラメータです、これはJavaScriptにサーバーにアクセスしようとします側のコレクション( '' grdCons.Rows')はインデックスではできません。 –
Ah - コールでJSインデックスを使用していたことがわかりませんでした。ええ、それは決して働くつもりはありません:) – Basic