События обратной передачи из DataView - PullRequest
2 голосов
/ 05 сентября 2008

Я представляю информацию из DataTable на своей странице и хотел бы добавить некоторые функции сортировки, которые выходят за рамки прямой сортировки столбцов. Поэтому я пытался разместить LinkButtons в HeaderItems моего GridView, которые выполняют обратную функцию для функций, которые изменяют информацию о сеансе перед перезагрузкой страницы.

Нажатие на мои ссылки ДЕЛАЕТ вызывает постбэк, но, похоже, они не генерируют никаких событий OnClick , поскольку мои OnClick функции не выполняются , У меня AutoEventWireup установлено значение true, и если я перемещаю ссылки из GridView, они работают нормально.

Я справился с проблемой, создав обычные якоря, добавив запросы к их hrefs и проверив их при загрузке страницы, но я бы предпочел, чтобы C # выполнял грубую работу. Есть идеи?

Обновление: Для уточнения идентификаторов элементов управления соответствуют их OnClick названиям функций.

Ответы [ 3 ]

2 голосов
/ 05 сентября 2008

Вы на правильном пути, но попробуйте поработать с именем команды / аргументом кнопки LinkButton. Попробуйте что-то вроде этого:

В HeaderTemplate объекта TemplateField добавьте LinkButton и установите CommandName и CommandArgument

<HeaderTemplate> 
    <asp:LinkButton ID="LinkButton1" runat="server" CommandName="sort" CommandArgument="Products" Text="<%# Bind('ProductName")' />
</HeaderTemplate>

Затем установите событие RowCommand GridView

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "sort")
    {
        //Now sort by e.CommandArgument

    }
}

Таким образом, вы имеете большой контроль над кнопками LinkButton, и вам не нужно много работать, чтобы отслеживать их.

0 голосов
/ 05 сентября 2008

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

<HeaderTemplate>
    <asp:LinkButton
        ID="lnkHdr1"
        Text="Hdr1"
        OnCommand="lnkHdr1_OnCommand"
        CommandArgument="Hdr1"
        runat="server"></asp:LinkButton>
</HeaderTemplate>

Кодовый код:

protected void lnkHdr1_OnCommand(object sender, CommandEventArgs e)
{
    // e.CommandArgument
}
0 голосов
/ 05 сентября 2008

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

необходимо учитывать две вещи.
  • Во-первых, в идеале элементы управления должны быть созданы в обработчике событий Page.Init. Это необходимо для того, чтобы элементы управления уже были созданы до запуска кода обработки событий.
  • Во-вторых, вы должны присвоить то же значение свойству ID элементов управления, чтобы код обработчика событий знал, что это был элемент управления, который должен обрабатывать событие.
...