2009-05-26 9 views
0

現在、ObjectDataSourceフロントエンドからASP.netメンバーシップへのデータを表示するカスタムグリッドビューインターフェイスを実装しようとしています。グリッドビューのasp.netコードはカスタムグリッドビュー - 非静的関数を使用したバインド

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

です。get roleOfUser()関数はパブリック関数なので、私のコードは現在死んでいます。私はUserNameの文字列(GridViewの2番目のセルから引っ張られている)をこの関数に渡したいと思いますが、私には分かりません。また、この非静的関数をどのように呼び出せるか分かりませんそれを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

+0

サービスの喜び。 – jrista

関連する問題