简体   繁体   English

无法从gridview链接按钮调用事件

[英]failed to call event from gridview linkbutton

basically i wish to set a session folo by button click, but i failed to do so 基本上我希望通过单击按钮来设置会话Folo,但是我没有这样做

i failed to call abcde function(), don't know what to set,i did try onRowCommand,onDataBound,OnDataBinding 我无法调用abcde function(),不知道要设置什么,我确实尝试过onRowCommand,onDataBound,OnDataBinding

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1">

my link button on gridview 我在GridView上的链接按钮

<asp:LinkButton ID="lnkname" runat="server" Text='<%#Eval("movieTitle") %>' Width=500 CommandName="cmdLink">

in order to find link button control i did try DataGridItemEventArgs, but it didnt work as well 为了找到链接按钮控件,我确实尝试了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()";

        }
    }

yi do so is because my next page function is depend on the session yi之所以这样做是因为我的下一页功能取决于会话

i use gridview RowCommand the aspx code snippet 我使用gridview RowCommand的aspx代码段

<asp:TemplateField>
    <ItemTemplate>
         <asp:LinkButton ID="btnLink" runat="server" CommandName="btnLinkClick" 
                 CommandArgument='<%# Bind("roll") %>'  Text="Find Name"></asp:LinkButton>
    </ItemTemplate>
</asp:TemplateField>

the code behind snippet 代码段背后的代码

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

here an interesting thing is if u set a postbackurl then second time you didn't get to server side it goes to your given url 这是一个有趣的事情,如果您设置了一个postbackurl,那么第二次您没有进入服务器端它将转到您给定的URL

if you simply want to set url, it is quite easy you can make a property url then bind it through button.PostBackUrl . 如果只想设置url,则可以很容易地创建一个属性url然后通过button.PostBackUrl将其绑定。 also if u need some value from client side then set eventagument 另外,如果您需要客户端提供一些值,请设置eventagument

you need to set CommandArgument in likbutton declaration, so that you can use it for binding. 您需要在likbutton声明中设置CommandArgument ,以便可以将其用于绑定。 GridViewRowcommandEvents 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()";
        }
    }

Ok, I'm not entirely sure what you mean, however in case you're asking how to manipulate controls within the grid on databinding, it goes like this: 好的,我不确定您的意思,但是,如果您要问如何在数据绑定中操纵网格内的控件,它会像这样:

    protected void grdvResults_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.DataItem != null)
        {
           ((LinkButton)e.Row.FindControl("lnkname")).PostBackUrl = "~/somewhere/" + Session["path"].ToString();
        }
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM