Member 11360268 Ответов: 1

Добавить событие click в динамически созданную кнопку linkbutton внутри gridview


Привет
Я работаю над приложением, которое требует генерировать динамические столбцы в gridview, а затем связываться с linkbutton.
это многое сделано, но я должен добавить событие click к кнопке link, но событие не срабатывает .
ниже приведен код,который я уже пробовал.
ниже приведен код внутри события rowbound gridview.

Что я уже пробовал:

foreach (DateTime dt в днях)
{
LinkButton lb = новый LinkButton();

фунт.ID = " lb " + i;
фунт.Атрибуты.Добавить ("runat", " сервер");
фунт.Текст = Р1[ДТ.Дата.ToString ("dd-MM-yyyy")].Метод toString();
фунт.Имя_команды = "Обновить";
фунт.Команда += lb_Command;
// фунтовый.OnClientClick += новый EventHandler(onLinkClick);
// фунт.Нажмите " + " = новый система.EventHandler(onLinkClick);
// фунт.Привязка данных += lb_DataBinding;


ряд.Клетки[i + 2]. элементы управления.Добавить (фунт);
я++;
если (ДТ.Дата <= система.значение datetime.Сегодня)
{
фунт.Включен = ложь;
}
}
}

F-ES Sitecore

Этот код работает и на обратной стороне почты?

Member 11360268

не получилось у него запустить в GridView с привязкой

F-ES Sitecore

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

Member 11360268

ок, это в настоящее время не являются обязательными при обратной передаче .я попробую привязки на обратной передачи

1 Ответов

Рейтинг:
0

Vincent Maverick Durano

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

Aspx-файл:

<asp:content id="Content2" contentplaceholderid="MainContent" runat="server" xmlns:asp="#unknown">
    <asp:gridview id="GridView1" runat="server" onrowcreated="GridView1_RowCreated">
        <columns>
                <asp:templatefield>
                    <itemtemplate>
                        <asp:placeholder id="PlaceHolder1" runat="server"></asp:placeholder>
                        </itemtemplate>
                </asp:templatefield>
         </columns>
    </asp:gridview>
</asp:content>


С ФОНОВЫМ КОДОМ:

using System;
using System.Web.UI.WebControls;
using System.Data;

namespace WebFormDemo
{
    public partial class DynamicControlInGridView : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e) {
            if (!IsPostBack)
                BindGridView();
        }

        protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e) {
            if (e.Row.RowType == DataControlRowType.DataRow) {

                LinkButton lb = new LinkButton();
                lb.ID = "LinkButton1";
                lb.Text = "Click Me!";
                lb.Click += OnLinkClick;

                PlaceHolder p = (PlaceHolder)e.Row.FindControl("PlaceHolder1");
                p.Controls.Add(lb);

            }
        }

        protected void OnLinkClick(object sender, EventArgs e) {
            LinkButton lb = (LinkButton)sender;
            GridViewRow row = (GridViewRow)lb.NamingContainer;
            if (row != null) {
                Response.Write("Found it!");
            }
        }

        private void BindGridView() {
            GridView1.DataSource = CreateDataSource();
            GridView1.DataBind();
        }

        public DataTable CreateDataSource() {
            DataTable dt = new DataTable();
            DataRow dr;

            dt.Columns.Add(new DataColumn("ID", typeof(string)));
            dt.Columns.Add(new DataColumn("Name", typeof(string)));
            dt.Columns.Add(new DataColumn("Lastname", typeof(string)));

            dr = dt.NewRow();
            //add values to each columns
            dr["ID"] = 1;
            dr["Name"] = "Vincent";
            dr["LastName"] = "Durano";
            dt.Rows.Add(dr);
            return dt;
        }
    }
}