PhoneTextBox2という名前のカスタムasp.netコントロールがあります。それはext.netライブラリを使用しますが、私は問題ではありません。 PhoneTextBox2
の一意の名前です - aspxページでAsp.netカスタムコントロールとjavascript関数
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="PhoneTextBox2.ascx.cs"
Inherits="Loginet.Web.Controls.PhoneTextBox2" %>
<script type="text/javascript">
var <%=ClientID%>_getNumber = function() {
return alert('some value');
}
</script>
<ext:CompositeField runat="server" ID="eCompositeField">
<Items>
<ext:Label ID="PhoneBoxTitle" runat="server" />
</Items>
</ext:CompositeField>
は、私がこのよう
<uc:PhoneTextBox2 runat="server" ID="txtb" />
<ext:Button Text="test" runat="server">
<Listeners>
<Click Handler="#{txtb}_getNumber();"></Click>
</Listeners>
</ext:Button>
#{txtb}_getNumber()
javascript関数の一意の名前があり、かつ#{txtb}
によってPhoneTextBox2
のjavascriptのメソッドを呼び出します。
getNumberを呼び出すにはどうすればいいですか?ドット?
<Click Handler="#{txtb}.getNumber();">
UPDATE:私の場合で
public partial class PhoneTextBox2 : System.Web.UI.UserControl {
/// <summary>
/// Допускаются ли, чтобы все поля были пустыми
/// True - Допускаются. Используется тогда, когда данные из этого контрола необязательные.
/// </summary>
public bool EnableEmptyValues { get; set; }
public string Title { get; set; }
protected void Page_Load(object sender, EventArgs e) {
txtCountryCode.AllowBlank = EnableEmptyValues;
txtCityCode.AllowBlank = EnableEmptyValues;
txtMainPhoneNumber.AllowBlank = EnableEmptyValues;
if (!IsPostBack && !Ext.Net.ExtNet.IsAjaxRequest) {
PhoneBoxTitle.Text = Title;
if (!string.IsNullOrWhiteSpace(DataSource)) {
string[] phoneNumberArray = DataSource.Split('-');
if (phoneNumberArray.Length >= _standartDimension) {
txtCountryCode.Text = phoneNumberArray[0];
if (txtCountryCode.Text[0] == _plus) {
txtCountryCode.Text = txtCountryCode.Text.Remove(0, 1);
}
txtCityCode.Text = phoneNumberArray[1];
txtMainPhoneNumber.Text = phoneNumberArray[2];
if (phoneNumberArray.Length >= _extraDimension) {
txtExtraPhoneNumber.Text = phoneNumberArray[3];
}
}
}
}
}
public string DataSource { get; set; }
private const string _phoneNumberMask = "+{0}-{1}-{2}-{3}";
private const char _plus = '+';
private const int _standartDimension = 3;
private const int _extraDimension = 4;
public string Number {
get {
if (!string.IsNullOrWhiteSpace(txtCountryCode.Text) &&
!string.IsNullOrWhiteSpace(txtCityCode.Text) &&
!string.IsNullOrWhiteSpace(txtMainPhoneNumber.Text)) {
//Если добавочный номер пустой, то возвратить значения без него
if (!string.IsNullOrWhiteSpace(txtExtraPhoneNumber.Text))
return string.Format(_phoneNumberMask, txtCountryCode.Text, txtCityCode.Text, txtMainPhoneNumber.Text, txtExtraPhoneNumber.Text);
string phoneNumber = string.Format(_phoneNumberMask, txtCountryCode.Text, txtCityCode.Text, txtMainPhoneNumber.Text, string.Empty);
return phoneNumber.Remove(phoneNumber.Length - 1);
}
return string.Empty;
}
}
public bool IsEmpty {
get {
return (string.IsNullOrWhiteSpace(txtCountryCode.Text) &&
string.IsNullOrWhiteSpace(txtCityCode.Text) &&
string.IsNullOrWhiteSpace(txtMainPhoneNumber.Text) &&
string.IsNullOrWhiteSpace(txtMainPhoneNumber.Text));
}
}
/// <summary>
/// Validate
/// </summary>
public void Validate() {
if (EnableEmptyValues) {
if (!IsEmpty && Number == string.Empty)
MarkInvalid();
else
MarkValid();
}
else {
if (IsEmpty)
MarkInvalid();
else {
if (Number == string.Empty)
MarkInvalid();
else
MarkValid();
}
}
}
public void MarkInvalid(string msg = null) {
txtCountryCode.MarkInvalid(msg);
txtCityCode.MarkInvalid(msg);
txtMainPhoneNumber.MarkInvalid(msg);
txtExtraPhoneNumber.MarkInvalid(msg);
}
public void MarkValid() {
txtCountryCode.MarkAsValid();
txtCityCode.MarkAsValid();
txtMainPhoneNumber.MarkAsValid();
txtExtraPhoneNumber.MarkAsValid();
}
public const string InvalidCheckBoxCssStyle = "border-color:#C30; background: url('/extjs/resources/images/default/grid/invalid_line-gif/ext.axd') repeat-x scroll center bottom white; width: 40px !important;";
public const string ValidCheckBoxCssStyle = "border-color:#000; background: none repeat scroll 0 0 transparent;";
}
注、私は理由ext.netの機能のサーバー側のプロパティNumber
を使用することはできません。したがって、私はNumber
を得るためにjavascriptを使用する必要があります。
ハンドラポイント**のJavaScript ** 関数。 – Alexandre
あなたはコントロールを指摘してソースコードを見ることができますか? – balexandre
コードの最初のブロックを見てください。 – Alexandre