【问题标题】:Asp.Net LinkButton Onclick = method( container.dataitem ), need help with syntaxAsp.Net LinkButton 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