Как сгенерировать LinkButton, созданные из другого события Link_Command в постбэке?

Итак, у меня есть список LinkButton, которые при нажатии создают больше LinkButton внутри таблицы для выполнения обратной передачи. Например, у каждого пользователя есть список действий или заданий. Поэтому, когда этот пользователь нажимается, он создает список своих заданий в таблице. Затем эти задания должны выполнять обратную передачу, чтобы получить их уважаемый контент.

Код C#:

protected void Page_Load(object sender, EventArgs e) {
    try {
        lstUsers = GetUsers();
        AddLinkButton("all", "All", tabList, link_Command);
        foreach (var item in lstUsers) {
            AddLinkButton(item.UID.ToString(), item.Name, tabList, link_Command);
        }
    } catch (Exception ex) { 

    }
}

void link_Clicked(object sender, CommandEventArgs e) {
    List<Job> jList = GetJobs(e.CommandArgument.ToString());
    foreach (Job job in jList) {
        HtmlTableRow row = new HtmlTableRow();
        AddCell(job.JobID.ToString(), job.Name, row);
        jobsTable.Rows.Add(row);
    }
} 


void AddCell(string id, string text, HtmlTableRow row) {
    HtmlTableCell cell = new HtmlTableCell();
    LinkButton link = new LinkButton();
    link.ID = id;
    link.Text = text;
    link.Command += new CommandEventHandler(job_Command);
    link.CommandArgument = id;
    link.Style.Add("color", "black");
    cell.Controls.Add(link);
    row.Cells.Add(cell);
}

void AddLinkButton(string id, string text, HtmlGenericControl list, CommandEventHandler handler) {
        LinkButton link = new LinkButton();
        link.ID = id;
        link.Text = text;
        link.Command += new CommandEventHandler(handler);
        link.CommandArgument = id;
        HtmlGenericControl li = new HtmlGenericControl("li");
        li.Controls.Add(link);
        list.Controls.Add(li);
    }

Выше в событии Page_Load я создаю список пользователей. Когда пользователь нажимает, он запускает link_Clicked. link_Clicked затем создает список строк, относящихся к этому Пользователю, поэтому действия или ссылки на работу.

Моя проблема в том, что мне нужно определить в Page_Load, действительно ли была нажата одна из ссылок, созданных в link_Clicked. Если у кого-то есть лучшие предложения о том, как я это делаю, я определенно прислушаюсь. Я очень новичок в разработке asp.net, поэтому, вероятно, есть лучший путь для этого.


person meanbunny    schedule 10.07.2012    source источник
comment
@Daniel, да, IsPostBack мне не поможет, так как я делаю несколько обратных передач на одну и ту же страницу. Мне нужно иметь возможность различать, какая обратная передача была.   -  person meanbunny    schedule 10.07.2012
comment
Да, дело в том, что он всегда будет запускать Page_Load, поэтому, вообще, вы можете проверить свойство IsPostBack см. информацию о жизненном цикле. Если вы отметите это, ваш код Page_Load не будет выполняться при запуске вашего события link_Clicked, и таким образом вы сможете взять на себя управление. В противном случае вы можете использовать что-то вроде свойства Attributes, чтобы пометить кнопки ссылок в каждом случае, а затем снова проверить это свойство, чтобы узнать, какая ссылка была нажата.   -  person danielQ    schedule 10.07.2012


Ответы (2)


Вам нужно будет написать свой собственный метод для отслеживания события.

Очень хороший пример приведен здесь http://www.codeproject.com/Tips/82086/How-to-know-what-control-has-raised-a-postback

person HatSoft    schedule 10.07.2012

Понятно!

string test1234 = Page.Request.Params.Get("__EVENTTARGET");

Это возвращает мне идентификатор элемента управления, который мне и нужен.

Я нашел учебник здесь.

person meanbunny    schedule 10.07.2012