Ведущий Диалог
Зарегистрирован: 11 May 2007
Сообщения: 155
Примеры кода: 0
|
Re: Добавить свое событие в контрол - КАК? |
14 February 2008 10:49 |
|
|
|
|
AAlexeyНапример так:
добавляем в Page_LoadtxtName1.Attributes.Add("onclick", ClientScript.GetPostBackEventReference(this, "argument1"));
где txtName1 твой TextBox. После этого будет происходить постбэк на сервер при клике на твой TextBox. Для обработки на сервере нужен кто нибудь, поддерживающий IPostBackEventHandler. Если в лоб, то можно для GetPostBackEventReference использовать this(сама страница) и добавить реализацию интерфейса IPostBackEventHandler для твоей страницы:public partial class _Default : System.Web.UI.Page, IPostBackEventHandler
и соответственно обработчикpublic void RaisePostBackEvent(string eventArgument)
{
Response.Write("TEST: " + eventArgument);
}
А по правильному, берешь делаешь свой контрол, наследуешся от обычного TextBox, реализуешь в нем IPostBackEventHandler и уже юзаешь свой прокачанный контрол с нужными тебе событиями.
Делаю так:
[System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name = "FullTrust")]
public class Trigger : System.Web.UI.WebControls.Label
{
. . .
#region New Event
public event EventHandler Click;
protected virtual void OnClick(EventArgs e)
{
if (Click != null)
{
Click(this, e);
}
}
public void RaisePostBackEvent(string eventArgument)
{
OnClick(new EventArgs());
}
#endregion
. . .
}
Контрол на странице:
<hc:Trigger runat="server" ID="Trigger1" OnClick="Trigger1_Click" />
Кодбихайнд страницы
protected void Trigger1_Click(object sender, EventArgs e)
{
Trigger1.Text = "Есть!";
}
Не работает! Событие Click в контроле есть - среда подсказывает, обработчик OnClick - тоже есть. Чего я не понимаю?
|
|