Событие действия Usercontrol с TextBox - PullRequest
1 голос
/ 26 сентября 2011

Я новичок в asp.net, Моя проблема в том, что у меня есть одна кнопка TextBox и пользовательский элемент управления в default.aspx. После нажатия кнопки мне нужно изменить текстовое значение TextBox (некоторое значение по умолчанию из пользовательского элемента управления).

Возможно ли это? Если да, то где мне нужно написать код?

Default.aspx

<%@ Register Src="Text.ascx" TagName="Edit" TagPrefix="uc1" %> 
<asp:TextBox ID="TextBox1" runat="server" Width="262px"></asp:TextBox>
<uc1:Edit Id="Edit2" runat="server" /></td>

Usercontrol - кнопка

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Text.ascx.cs" Inherits="WebApplication4.WebUserControl1" %>
<asp:Button ID="Button1" runat="server" Text="Edit " OnClientClick="return confirm('Are you certain you want to Navigate?');" Width="341px" onclick="Button1_Click" />

как сгруппировать или запустить (изменение значения текстового поля) из usercontrol?

Ответы [ 2 ]

2 голосов
/ 26 сентября 2011

Начиная с вашего пользовательского элемента управления:

<asp:Button ID="Button1" runat="server" Text="Edit " 
    OnClientClick="return confirm('Are you certain you want to Navigate?');" 
    Width="341px" onclick="Button1_Click"/>

В приведенном ниже коде это используется для создания пользовательского события, которое срабатывает при нажатии кнопки.

using System;
using System.Web.UI;

namespace TestApplication
{
    public partial class Edit : UserControl
    {
        public string DefaultValue { get; set; }
        protected void Page_Load(object sender, EventArgs e)
        {

        }
        private static object EditClickKey = new object();
        public delegate void EditEventHandler(object sender, EditEventArgs e);
        public event EditEventHandler EditClick
        {
            add
            {
                Events.AddHandler(EditClickKey, value);
            }
            remove
            {
                Events.RemoveHandler(EditClickKey, value);
            }
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            OnEditClick(new EditEventArgs(DefaultValue));
        }
        protected virtual void OnEditClick(EditEventArgs e)
        {
            var handler = (EditEventHandler)Events[EditClickKey];
            if (handler != null)
                handler(this, e);
        }

        public class EditEventArgs : EventArgs
        {
            private string data;
            private EditEventArgs()
            {
            }
            public EditEventArgs(string data)
            {
                this.data = data;
            }
            public string Data
            {
                get 
                {
                    return data;
                }
            }
        }
    }
}

Страница «Default.aspx» будет содержать обработчик событий для вашего нового настраиваемого события.
Разметка:

<asp:TextBox ID="TextBox1" runat="server" Width="262px"></asp:TextBox>
    <uc1:Edit ID="Edit1" runat="server" OnEditClick="EditClick_OnEditClick" DefaultValue="default" />


Код позади:

protected void EditClick_OnEditClick(object sender, TestApplication.Edit.EditEventArgs e)
        {
            TextBox1.Text = e.Data;
        }
1 голос
/ 26 сентября 2011

В Button1_Click событии Button1 вы можете получить ссылку на TextBox, используя метод Page.FindControl(), например:

protected void Button1_Click(...)
{
     TextBox txtBox = (TextBox)this.Page.FindControl("TextBox1");
     if(txtBox != null)
        txtBox.Text = "Set some text value";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...