【问题标题】:Custom gridview - bind using non-static function自定义gridview - 使用非静态函数绑定
【发布时间】:2009-05-26 16:26:49
【问题描述】:

我目前正在尝试实现一个自定义的 gridview 界面来显示从 ObjectDataSource 前端到 ASP.net 成员资格的数据。 gridview的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() 是一个公共函数。最好我想将用户名的字符串(从 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;
    } 

【问题讨论】:

    标签: c# asp.net data-binding


    【解决方案1】:

    应该是:

    <% getRoleOfUser( ) %>
    

    假设它是 GridView 所在页面的成员函数。

    【讨论】:

    • 这确实有效。我似乎记得尝试过并遇到命名空间错误,但它现在可以工作了:) 谢谢。
    猜你喜欢
    • 1970-01-01
    • 2020-04-24
    • 2012-01-29
    • 2023-02-22
    • 1970-01-01
    • 2011-09-09
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    相关资源
    最近更新 更多