方法1 - イベントが親フォームユーザーコントロールで
における制御によってトリガされた場合は、テキストボックスのIDを返すプロパティを定義することができます。
public string TextBoxID
{
get { return txtOne.ClientID; }
}
フォームにユーザーコントロールの2つのインスタンス、ctrl1
とctrl2
が含まれている場合は、
document.getElementById('<%= ctrl1.TextBoxID %>').disabled = true;
注:ユーザーコントロールでは、あなたが内部統制のためのClientIDMode="Static"
を使用していないことを確認してくださいあなたは、このような特定のものをターゲットにすることができます。
方法2 - イベントは、ユーザーコントロールの内部制御によってトリガされた場合ユーザーコントロールは、次のマークアップが含まれている場合
:
<asp:CheckBox ID="chk1" runat="server" />
<asp:TextBox ID="txtOne" runat="server" />
あなたにJavascriptのイベントハンドラを追加することができますがユーザコントロールのPage_Load
メソッドのCheckBox:
protected void Page_Load(object sender, EventArgs e)
{
string js = string.Format("txtBoxID = '{0}';", txtOne.ClientID);
chk1.Attributes.Add("onmousedown", js);
chk1.Attributes.Add("onkeydown", js);
}
これらのイベントハンドLERはあなたがあなたのJavascriptのブロックで定義して使用することができますtxtBoxID
変数の値を設定します。
<script type="text/javascript">
var txtBoxID;
function confirmCallBackFn(arg) {
if (arg == true) {
document.getElementById(txtBoxID).disabled = true;
}
}
</script>
この方法は、プロセスの間に何のポストバックがないことを前提としています。ポストバックが発生した場合、そのメソッドを修正し、コードビハインドのイベントハンドラにスクリプトを登録する必要があります。
両方のコントロールにID txtOneがありますか? –
はい、それがUsercontrol –
に含まれているため、親コントロールでそれを参照します。 ParentControl.UserControl.ID –