2009-05-26 21 views
0

我目前正試圖實現一個自定義的gridview接口來顯示數據從ObjectDataSource前端到ASP.net成員資格。爲GridView asp.net代碼是自定義gridview - 綁定使用非靜態函數

 <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> 

我的代碼目前正在死去,因爲功能得到roleOfUser()是一個公共職能。最好我想傳遞一個UserName的字符串(從GridView的第二個單元格拉)到這個函數,但我不確定,以及如何調用這個非靜態函數,因爲我不知道如何從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; 
    } 

回答

1

應該僅僅是:

<% getRoleOfUser() %> 

假設其頁面的成員函數你的GridView上。

+0

這確實有效。我似乎記得嘗試並獲取命名空間錯誤,但它現在正在工作:)謝謝。 – PhrkOnLsh 2009-05-26 16:47:01

+0

很高興爲您服務。 – jrista 2009-05-26 16:56:42