Linkbutton cliquez dans un asp:GridView cellule ne pas déclencher OnRowCommand événement
Fonctionnalité de l'INTERFACE utilisateur: j'ai un GridView
avec quelques colonnes. Le plus important de la colonne est PcCode, ce qui montre une string
valeur pour chaque ligne.
Devrait: Lorsque je clique sur l'une des cellules à partir d'une ligne de PcCode colonne d'une autre GridView
doit être affiché. Cependant, lorsque j'essaie d'utiliser un asp:LinkButton
pour une cellule, les choses ne fonctionnent pas. RowCommand
ne pas se déclencher lorsque je clique sur un asp:LinkButton
dans le GridView
cellule. Où suis-je en train de faire des choses mauvaises? La manière dont de la fonctionnalité attendue peut être réalisé? Merci à l'avance pour aider un débutant.
Dans le code suivant, j'ai essayé d'obtenir un RowIndex
et le passer à travers la CommandArgument
et l'utilisation d'un CommandName
.
.code aspx
<asp:GridView ID="_UIProfitcenterTotalGridView" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None" AllowPaging="True" PageSize="22" ShowFooter="True" AutoGenerateColumns="False"
DataKeyNames="ProfitcenterCode" EnableViewState="False"
OnRowDataBound="_UIProfitcenterTotalGridView_RowDataBound"
OnPageIndexChanging="_UIProfitcenterTotalGridView_PageIndexChanging"
OnRowCommand="_UIProfitcenterTotalGridView_OnRowCommand">
<Columns>
<asp:TemplateField HeaderText="PcCode" InsertVisible="False"
ShowHeader="False" SortExpression="ProfitcenterCode" FooterText="Total" FooterStyle-HorizontalAlign="Left">
<ItemTemplate>
<asp:LinkButton ID="_UIPCCodeLinkButton" runat="server" Text='<%# Eval("ProfitcenterCode") %>'
CommandName="Select"
CommandArgument='<%# ((GridViewRow) Container).RowIndex %>'>
</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
...
le code derrière pour aspx.cs
protected void _UIProfitcenterTotalGridView_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Select")
{
int index = Convert.ToInt32(e.CommandArgument);
GridViewRow row = _UIProfitcenterTotalGridView.Rows[index];
string ProfitcenterCode = _UIProfitcenterTotalGridView.DataKeys[_UIProfitcenterTotalGridView.SelectedIndex].Values["ProfitcenterCode"].ToString();
}
}
Après la ligne est sélectionnée j'ai besoin de prendre de la ligne sélectionnée de la valeur sous forme de chaîne et de les comparer avec une listitem à montrer une nouvelle GridView.
Essayé
-
À l'aide de Link_Button_Click(Object sender, EventArgs e) et le suivant, mais a échoué.
protected void _UIProfitcenterTotalGridView_Rowcommand(object sender, GridViewCommandEventArgs e)
{
si (e.CommandName == "Select")
{string ProfitcenterCode = ((GridViewRow)(((LinkButton)e.CommandSource).NamingContainer)).Les cellules[2].Texte;
}
}
Vous devez vous connecter pour publier un commentaire.
J'ai essayé d'utiliser
LinkButton_Click()
de l'événement au lieu deRowCommand
comme jason suggéré:Cependant, j'ai encore eu le problème, j'ai compris. Le problème était le
LinkButton
n'était pas contraignant pour les lignes thefore, il ne pouvait pas passer toute valeur sur la sélection. Ce qui manquait était le code suivant:Vous pouvez utiliser l'objet expéditeur ( le lien bouton qui appelle l'événement) et d'obtenir la ligne parente de la gridview. Exemple:
Il était difficile de suivre exactement ce que vous recherchez, donc si j'ai raté quelque chose faites le moi savoir et je vais l'ajouter.
Et de changer votre linkbutton à: