Кнопка на сервере не работает для Asp.Net - PullRequest
0 голосов
/ 27 августа 2018

У меня есть кнопка, созданная во время выполнения,

sb.Append("<button runat="server" onserverclick="btnTaskDelete_Click"  id='Task1' style="float: right; margin-right: 14px;height: 27px;width: 27px;" class='btn btn-danger'><i style ="transform: translate(-50%, -50%); width: 12px; height: 6px; display: block;" class="fa fa-trash"></i></button>");

Затем добавьте этот StringBuilder (sb) в литерал.

И для метода сервера

protected void btnTaskDelete_Click(object sender, EventArgs e)
{
   ...
}

Но что бы я ни пытался, btnTaskDelete_Click не запускается !!!

Примечание Я решил это, вызвав метод Onclick на стороне клиента, а затем вызов ajax для вызова серверной функции

Ответы [ 2 ]

0 голосов
/ 27 августа 2018

Нельзя добавить динамическую кнопку как в виде строки.Как вы знаете, есть и другие возможности для достижения той же функциональности, как показано ниже.

Стиль:

.myclass
{
        float: right; margin-right: 14px;height: 27px;width: 27px;
}

Динамическое управление:

Button myControl = new Button();
myControl.Text = "Click Me";  
myControl.ID = "Task1";
myControl.CssClass = "btn btn-danger myclass";
myControl.Click += new EventHandler(this.button_Click);
Page.Controls.Add(myControl);

void button_Click(object sender, System.EventArgs e)
{
     //your stuff goes here...
}

Примечание: Это должно быть при загрузке страницы для начального контроля в каждой обратной передаче.Это сохранит состояние представления, поэтому оно позаботится о введенном значении в элементах управления.

0 голосов
/ 27 августа 2018

Нельзя добавить серверный HTML-элемент управления из-за кода с помощью StringBuilder.Используйте класс HtmlButton, чтобы создать кнопку и поместить ее внутри формы (или другого серверного элемента управления, например Panel), следуя этому примеру:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        var button = new System.Web.UI.HtmlControls.HtmlButton();

        button.Id = "Task1";
        button.Attributes["style"] = "float: right; margin-right: 14px;height: 27px;width: 27px;";
        button.Attributes["class"] = "btn btn-danger";
        button.ServerClick += new EventHandler(btnTaskDelete_Click);
        button.InnerHtml = "<i style ="transform: translate(-50%, -50%); width: 12px; height: 6px; display: block;" class="fa fa-trash"></i>";

        Form1.Controls.Add(button); // add to form server control named 'Form1'
    }
}

Способ StringBuilderК созданию элементов HTML применяется только в том случае, если все созданные элементы являются литеральными элементами HTML, а не серверным элементом управления (отмечен атрибутом runat="server").

Обновление:

Если выЧтобы поместить кнопку в элемент управления div, просто установите элемент в качестве серверного элемента управления, например <div id="ParentDiv" runat="server"></div>, и укажите его в качестве цели вставки:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        var button = new System.Web.UI.HtmlControls.HtmlButton();

        button.Id = "Task1";
        button.Attributes["style"] = "float: right; margin-right: 14px;height: 27px;width: 27px;";
        button.Attributes["class"] = "btn btn-danger";
        button.ServerClick += new EventHandler(btnTaskDelete_Click);
        button.InnerHtml = "<i style ="transform: translate(-50%, -50%); width: 12px; height: 6px; display: block;" class="fa fa-trash"></i>";

        ParentDiv.Controls.Add(button); // add to form server control named 'Form1'
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...