【问题标题】:Asp.Net LinkButton Onclick = method( container.dataitem ), need help with syntaxAsp.Net LinkBut​​ton Onclick = method(container.dataitem),需要语法帮助
【发布时间】:2009-04-15 13:00:29
【问题描述】:

我有一个链接按钮,我想在后面的代码中调用一个方法。该方法需要一个参数,我需要将其粘贴在 container.dataitem 中。我知道 container.dataitem 语法是正确的,因为我在其他控件中使用它。我不知道如何使用它作为方法的参数。单击按钮后,应使用 container.dataitem 调用该方法。该方法称为'AddFriend(字符串用户名)' 下面是代码。谢谢!

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

【问题讨论】:

    标签: asp.net methods containers dataitem


    【解决方案1】:

    您需要使用 ButtonField 并处理 RowCommand 中的单击。检查MSDN docs

     <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"));
        }
      }
    

    【讨论】:

    • 链接按钮在数据列表中。
    【解决方案2】:

    我认为同样的事情也适用于数据列表,但我一直在后面的代码中使用它作为中继器。可以使用 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]);
        }
    }
    

    【讨论】:

      【解决方案3】:

      也许是这个?

      <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
      

      【讨论】:

        猜你喜欢
        • 2020-12-26
        • 2016-08-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多