2009-05-26 6 views
0

Je tente actuellement d'implémenter une interface gridview personnalisée pour afficher les données d'une interface ObjectDataSource vers l'appartenance ASP.net. Le code asp.net pour le gridview estGrille personnalisée - lier à l'aide d'une fonction non statique

 <asp:GridView 
      id="grdUsers" 
      HeaderStyle-cssclass="grid_header" 
      RowStyle-cssclass="row" 
      AlternatingRowStyle-cssclass="alternating" 
      OnRowUpdating="grdUsers_RowUpdating" 
      OnRowDeleting="grdUsers_RowDeleting" 
      OnRowCancelingEdit="grdUsers_cancelEdit" 
      datasourceid="srcUsers" 
      autogeneratecolumns="false" 
      allowsorting="true" 
      AllowPaging="true" 
      EmptyDataText="No users..." 
      pagesize="9" 
      runat="server"> 
      <Columns> 
       <asp:CommandField 
        HeaderText="Ops" 
        ButtonType="Image" 
        ShowEditButton="true" 
        EditText="E" 
        UpdateText="U" 
        ShowCancelButton="true" 
        CancelText="X" 
        ShowDeleteButton="true" 
        DeleteText="D" /> 
       <asp:BoundField 
        ReadOnly="true" 
        DataField="UserName" 
        HeaderText="UserName" /> 
       <asp:BoundField 
        DataField="Email" 
        HeaderText="Contact Email" /> 
       <asp:TemplateField 
        HeaderText="Role"> 
        <ItemTemplate> 
        <asp:Label 
         ID="lblRole" 
         text="<%# namespace.Admin.getRoleOfUser() %>" 
         runat="server" /> 
        </ItemTemplate> 
        </asp:TemplateField> 
       <asp:CheckBoxField 
        DataField="IsApproved" 
        HeaderText="User is Approved" /> 
       <asp:TemplateField 
        HeaderText="UserLocked"> 
        <ItemTemplate> 
        <asp:CheckBox 
         id="grdUsers_lockCheckBox" 
         Checked='<%# Eval("IsLockedOut") %>' 
         Enabled="false" 
         runat="server" /> 
        </ItemTemplate> 
        <EditItemTemplate> 
        <asp:Button 
         id="grdUsers_unlockUser" 
         OnClick="grdUsers_unlockUser" 
         Text="Unlock" 
         runat="server" /> 
        <asp:HyperLink 
         id="grdUsers_lockInfo" 
         text="?" 
         onclick='popup("lock_info.html")' 
         runat="server" /> 
        </EditItemTemplate> 
       </asp:TemplateField> 
      </Columns> 
      </asp:GridView> 

Mon code est actuellement en train de mourir parce que la fonction se roleOfUser() est une fonction publique. De préférence je voudrais passer une chaîne de UserName (tiré de la deuxième cellule de la GridView) à cette fonction mais que je ne suis pas sûr de, aussi bien que comment appeler cette fonction non-statique car je ne sais pas comment pour l'instancier à partir du code asp.net.

public string getRoleOfUser() 
    { 
     GridView users = (GridView)admin.FindControlRecursive(Page, "grdUsers"); 
     Int32 i = users.EditIndex; 

     GridViewRow userRow = users.Rows[i]; 

     return userRow.Cells[1].Text; 
    } 

    private Control FindControlRecursive(Control root, string id) 
    { 
     if (root.ID == id) 
     { 
      return root; 
     } 

     foreach (Control c in root.Controls) 
     { 
      Control t = FindControlRecursive(c, id); 
      if (t != null) 
      { 
       return t; 
      } 
     } 

     return null; 
    } 

Répondre

1

Il devrait juste être:

<% getRoleOfUser() %> 

Assumant sa fonction de membre de la page de votre GridView est activée.

+0

Cela fonctionne en effet. Je me souviens d'avoir essayé cela et d'avoir eu des erreurs d'espace de noms, mais ça fonctionne maintenant :) merci. – PhrkOnLsh

+0

Content d'être utile. – jrista

Questions connexes