我有一个链接按钮,我想在后面的代码中调用一个方法。该方法需要一个参数,我需要将其放在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>
答案 0 :(得分:0)
您需要使用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"));
}
}
答案 1 :(得分:0)
我认为同样的事情适用于数据列表,但我一直在我的代码中使用它作为转发器。 Mayby使用DataListItemEventArgs和DataListCommandEventArgs代替Repeater。
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]);
}
}
答案 2 :(得分:0)
也许这个?
<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