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;
}
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
Content d'être utile. – jrista