2009-01-14 8 views
1

J'ai un ig: TemplateDataField qui contient un label. Dans le gestionnaire d'événements InitializeRow, j'essaie de trouver cette étiquette avec e.Row.FindControl mais j'ai la valeur null.FindControl dans Infragistics webDataGrid

Je n'ai pas réussi à trouver un autre moyen de trouver mon label. Comment rechercher des contrôles dans les lignes WebDataGrid lors de l'événement InitializeRow?

Répondre

1

Voici une solution qui devrait fonctionner. note: le code est pour un contrôle Infragistics UltraWebGrid. Le contrôle WebDataGrid est le successeur d'UltraWebGrid.

C#:

protected void UltraWebGridCustomers_InitializeRow(object sender, Infragistics.WebUI.UltraWebGrid.RowEventArgs e) 
{ 
    TemplatedColumn col = (TemplatedColumn)e.Row.Cells.FromKey("HyperLinkEmailColumn").Column; 
    CellItem cellItem = (CellItem)col.CellItems(e.Row.Index); 
    HyperLink hyperLinkEmail = (HyperLink)cellItem.FindControl("HyperLinkSendEmail"); 
    hyperLinkShowDetails.Attributes.Add("onclick", "alert('This is the email link');"); 
} 

VB.NET:

Private Sub UltraWebGridCustomers_InitializeRow(ByVal sender As Object, ByVal e As Infragistics.WebUI.UltraWebGrid.RowEventArgs) Handles UltraWebGridCustomers.InitializeRow 
     Dim col As TemplatedColumn = CType(e.Row.Cells.FromKey("HyperLinkEmailColumn").Column, TemplatedColumn) 
     Dim cellItem As CellItem = CType(col.CellItems(e.Row.Index), CellItem) 
     Dim hyperLinkEmail As HyperLink = CType(cellItem.FindControl("HyperLinkSendEmail"), HyperLink) 
     hyperLinkShowDetails.Attributes.Add("onclick", "alert('This is the email link');") 
End Sub 

Code Aspx:

<infragistics:UltraWebGrid ID="UltraWebGridCustomers" runat="server"> 
    <Bands> 
     <infragistics:UltraGridBand BaseTableName="Customers" Key="BandCustomers"> 
      <Columns> 
       ... 
       <infragistics:UltraGridColumn Key="NameColumn" BaseColumnName="Name" IsBound="True"> 
        <Header Caption="Name"> 
        </Header> 
       </infragistics:UltraGridColumn> 
       <infragistics:UltraGridColumn Key="EmailColumn" BaseColumnName="Email" IsBound="True"> 
        <Header Caption="Email Address"> 
        </Header> 
       </infragistics:UltraGridColumn> 
       <infragistics:TemplatedColumn Key="HyperLinkEmailColumn"> 
        <CellTemplate>       
         <asp:HyperLink ID="HyperLinkSendEmail" NavigateUrl='<%# "~/EmailForm.aspx?email=" & DataBinder.Eval(Container.DataItem,"Email")%>' ToolTip="Send Email" runat="server" /> 
        </CellTemplate> 
       </infragistics:TemplatedColumn> 
       ... 
      </Columns> 
      <AddNewRow View="NotSet" Visible="NotSet"> 
      </AddNewRow>        
     </infragistics:UltraGridBand> 
    </Bands> 
    ... 
</infragistics:UltraWebGrid>  
1

Vous devez spécifier la colonne que vous souhaitez rechercher dans comme e.Row.Items[0].FindControl("ControlID")0 l'index de la colonne.

Questions connexes