2009-04-15 5 views
1

J'ai un linkbutton que je veux appeler une méthode dans le code derrière. La méthode prend un paramètre dont j'ai besoin de coller dans un container.dataitem. Je sais que la syntaxe container.dataitem est correcte car je l'utilise dans d'autres contrôles. Ce que je ne sais pas, c'est comment l'utiliser comme paramètre pour une méthode. En cliquant sur le bouton, la méthode devrait être appelée avec container.dataitem. La méthode est appelée 'AddFriend (nom d'utilisateur de la chaîne)' Ci-dessous le code. Je vous remercie!Asp.Net LinkButton Onclick = méthode (container.dataitem), besoin d'aide avec la syntaxe

<asp:LinkButton ID="lbAddFriend" runat="server" OnClick='<%# "AddFriend(" +((System.Data.DataRowView)Container.DataItem)["UserName"]+ ")" %>' Text="AddFriend"></asp:LinkButton></td> 

Répondre

0

Vous devez utiliser un ButtonField et gérer le clic dans RowCommand. Vérifiez la MSDN docs

<asp:buttonfield buttontype="Link" 
        commandname="Add" 
        text="Add"/> 

Et dans le code derrière ...

void ContactsGridView_RowCommand(Object sender, GridViewCommandEventArgs e) 
    { 
    if(e.CommandName=="Add") 
    { 
     AddFriend(DataBinder.Eval(Container.DataItem, "Price""UserName")); 
    } 
    } 
+0

Le linkbutton est dans un datalist. – user84786

0

Je pense que la même chose s'applique à une liste de données, mais je l'ai utilisé cela pour un répéteur dans mon code derrière . Mayby peut utiliser DataListItemEventArgs et DataListCommandEventArgs à la place du répéteur.

protected void rptUserInfo_Data(object sender, RepeaterItemEventArgs e) 
{ 
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
    { 
     UserInfo oUserInfo = e.Item.DataItem as UserInfo; 

     LinkButton hlUser = e.Item.FindControl("hlUser") as LinkButton; 
     hlUser.Text = oUserInfo.Name; 
     hlUser.CommandArgument = oUserInfo.UserID + ";" + oUserInfo.uName; 
     hlUser.CommandName = "User"; 
    } 
} 
public void UserArtItem_Command(Object sende, RepeaterCommandEventArgs e) 
{ 
    if (e.CommandName == "User") 
    { 
     string command = e.CommandArgument.ToString(); 
     string[] split = command.Split(new Char[] { ';' }); 

     Session["ArtUserId"] = split[0]; 
     Session["ArtUserName"] = split[1]; 
     Response.Redirect("~/Author/" + split[1]); 
    } 
} 
0

Peut-être que cela?

<asp:LinkButton ID="lbAddFriend" runat="server" 
Text="Add Friend" OnCommand="AddFriend" 
CommandArgument='<%# Eval("UserName").ToString() %>' /> 

Puis dans le code:

Protected Sub AddFriend(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.CommandEventArgs) 
    Dim UserName As String = e.CommandArgument 
    'Rest of code 
End Sub 
Questions connexes