Asp.Net LinkButton Onclick = метод (container.dataitem), нужна помощь с синтаксисом - PullRequest
1 голос
/ 15 апреля 2009

У меня есть кнопка ссылки, которую я хочу вызвать методом в коде. Метод принимает параметр, который мне нужно вставить в container.dataitem. Я знаю, что синтаксис container.dataitem правильный, потому что я использую его в других элементах управления. Чего я не знаю, так это как использовать параметр для метода. После нажатия на кнопку метод должен вызываться с container.dataitem. Метод называется «AddFriend (string username)». Ниже приведен код. Спасибо!

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

Ответы [ 3 ]

0 голосов
/ 15 апреля 2009

Я думаю, что то же самое относится и к списку данных, но я использовал это для повторителя в моем коде позади. Может использовать DataListItemEventArgs и DataListCommandEventArgs вместо повторителя.

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 голосов
/ 15 апреля 2009

Может быть, это?

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

Тогда в коде:

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
0 голосов
/ 15 апреля 2009

Вам нужно использовать ButtonField и обрабатывать щелчок в RowCommand. Проверьте MSDN документы

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

И в коде позади ...

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