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;
}
これは実際に動作します。私はそれを試み、名前空間のエラーを取得することを覚えているようだが、それは今働いています:)ありがとう。 – PhrkOnLsh
サービスの喜び。 – jrista