无法从gridview链接按钮调用事件
本文关键字:按钮 调用 事件 链接 gridview | 更新日期: 2023-09-27 18:22:45
基本上我想通过点击按钮来设置会话,但我没能做到
我无法调用abcde函数(),不知道该设置什么,我确实尝试了onRowCommand、onDataBound、OnDataBinding
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1">
我在gridview上的链接按钮
<asp:LinkButton ID="lnkname" runat="server" Text='<%#Eval("movieTitle") %>' Width=500 CommandName="cmdLink">
为了找到链接按钮控件,我确实尝试了DataGridItemEventArgs,但效果不佳
protected void abcde(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "cmdLink")
{
string path = //some path;
Session["path"] = path;
((LinkButton)e.Item.FindControl("lnkname")).PostBackUrl = "~/somewhere/ + Session["path"].ToString()";
}
}
我这么做是因为我的下一页功能取决于会话
i使用网格视图RowCommand
aspx代码片段
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="btnLink" runat="server" CommandName="btnLinkClick"
CommandArgument='<%# Bind("roll") %>' Text="Find Name"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
代码段
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "btnLinkClick")
{
string path = //some path;
Session["path"] = path;
var button = e.CommandSource as LinkButton;
button.PostBackUrl = path;
}
}
这里有一个有趣的事情是,如果你设置了一个postbackurl,那么第二次你没有到达服务器端时,它会转到你给定的url
如果你只是想设置url,那么你可以很容易地创建一个属性url
,然后通过button.PostBackUrl
将其绑定。如果你需要客户端的一些值,则设置eventagument
好吧,我不完全确定你的意思,但如果你问如何在数据绑定上操作网格中的控件,它是这样的:
protected void grdvResults_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.DataItem != null)
{
((LinkButton)e.Row.FindControl("lnkname")).PostBackUrl = "~/somewhere/" + Session["path"].ToString();
}
}
您需要在likbutton声明中设置CommandArgument
,以便使用它进行绑定。GridViewRowcommandEvents
protected void abcde(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "cmdLink")
{
string path = //some path;
Session["path"] = path;
LinkButton objButton = (LinkButton)e.Item.FindControl("lnkname"); //this is you are missing
objButton.PostBackUrl = "~/somewhere/" + Session["path"].ToString()";
}
}