2009-11-24 3 views
0

У меня есть ссылка, вложенная в datagrid, которая вложена в datalist (да, очень странно, но, к сожалению, это часть сайта, которую я не могу изменить). По сути, я хочу, чтобы linkbutton запускал обработчик событий, который вызывает Response.Redirect (e.CommandArgument)). Другими словами, у меня уже есть URL-адрес, который я хочу перенаправить, но я не могу понять, как заставить событие запускаться, когда я нажимаю на ссылку.Регистрация обработчика события VB.Net для вложенного linkbutton

Я попытался использовать события OnClick linkbutton и события ItemCommand для datagrid, но я не думаю, что правильно их зарегистрирую.

Вот HTML для элементов управления.

<asp:DataList ID="dlstC" BorderWidth="0px" BorderStyle="None" CellPadding="2" CellSpacing="0" 
runat="server"> 
<ItemTemplate> 
    <table cellpadding="0" cellspacing="0"> 
     <tr style="padding-bottom: 4px"> 
      <td style="height: 20px"> 
       <asp:Label runat="server" ID="lblCertNum" Text='<%# "20" + (CStr(Container.DataItem("QuoteID").ToString) + "-" + CStr(Container.DataItem("QuoteRef").ToString)) %>' 
        Font-Bold="True" Font-Size="8pt"></asp:Label></td> 
     </tr> 
     <tr> 
      <td> 
       <asp:DataGrid ID="dgd_Certs" runat="server" ShowHeader="False" AutoGenerateColumns="False" 
        DataSource='<%# GetCert(CInt(Container.DataItem("QuoteRef"))) %>' BorderStyle="None" 
        BorderWidth="0" BorderColor="#ffffff" CellPadding="4" CellSpacing="0" OnItemCommand="DataGrid_EditItem"> 
        <Columns> 
         <asp:TemplateColumn> 
          <ItemTemplate> 
           <asp:LinkButton ID="hlnCert" runat="server" Text='<%# Container.DataItem("CertName").ToString %>' CommandName="RedirectToCert" 
            CommandArgument='<%# BuildURLToCert(CInt(Container.DataItem("QuoteRef"))) %>' ToolTip="Click to view/edit certificate" ></asp:LinkButton> 
          </ItemTemplate> 
         </asp:TemplateColumn> 
         <asp:TemplateColumn> 
          <ItemTemplate> 
           <asp:Label ID="lblDate" runat="server" Text='<%# "Created - " + CStr(Container.DataItem("DateCreated").ToString)%>'></asp:Label> 
          </ItemTemplate> 
         </asp:TemplateColumn> 
        </Columns> 
       </asp:DataGrid> 
      </td> 
     </tr> 
    </table> 
</ItemTemplate> 

А в коде позади меня есть

Public Sub DataGrid_EditItem(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) 

    If e.CommandName = "RedirectToCert" Then 

     Response.Redirect(e.CommandArgument.ToString) 

    End If 

End Sub 

Это моя последняя попытка, когда я пытаюсь получить DataGrids ItemCommand стрелять, когда клиент нажимает на ссылку, но он не работает в данный момент.

Если это не так, есть ли более простой способ перенаправить клиента на правильную страницу, когда они нажимают на ссылку? Я попытался использовать OnPostBackURL, но проблема в том, что есть объекты, которые нужно переносить, которые, похоже, не являются, когда я это делаю, или когда я просто использую гиперссылку с набором navigateurl.

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

ответ

0

Мне никогда не удавалось обработать обработчик событий, чтобы отключить ссылку, но я придумал работу по исходной проблеме, имея переменные, переданные с одной страницы на другую. Я использовал гиперссылку вместо кнопки linkbutton и использовал строки запроса для передачи ссылочных номеров для объектов, которые мне нужны для доступа на новой странице.