【问题标题】:GridViewRowCommand keep fireGridView RowCommand 保持火力
【发布时间】:2012-02-06 06:34:13
【问题描述】:

每次点击都会显示我的 label1.text,但是我的标签在页面加载期间被触发,这不是我想要的,所以任何想法都可以执行每次点击触发事件?

gridview 属性

asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" OnRowDataBound="abcde"

gridview 内的链接按钮

asp:LinkBut​​ton ID="lnkname" runat="server" Text='' Width=500 CommandName="cmdLink">

链接按钮的代码

protected void abcde(object sender, GridViewRowEventArgs e)

{

    Label1.Text = ((LinkButton)e.Row.FindControl("lnkname")).Text;


}

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    问题是,每当 Gridview 中发生任何单击事件时,GridviewRowCommand 都会被触发..您只需检查何时要触发此事件。这意味着在分页事件期间也会触发此事件..您只需检查一下像这样使用 [CommandName]

    http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowcommand.aspx

            string namec = e.CommandName.ToString();
            if (namec == "cmdLink")
            {
               //put your code  
            } 
    

    【讨论】:

      【解决方案2】:

      听起来你在页面加载事件上绑定了gridview。每次绑定gridview时,都会触发onb​​ound事件:

      protected void abcde(object sender, GridViewRowEventArgs e)

      您可以通过在 gridview 数据绑定之前检查页面加载中的回发来避免这种情况:

      if (!IsPostBack)
      {
           //Gridview databind
      }
      

      【讨论】:

      • 我把 GridView1.DataBind() 放在 isPostBack 下结果还是一样=(
      • 您在 GridViewRowBound 中的代码 --> abcde 的执行次数与您的 gridview 有多少行一样多。您想在什么情况下将 Label1.Text 初始化为链接按钮文本?现在,您的代码为所有 gridview 行中的所有链接按钮初始化。
      • 这只是一个例子,我想做的是不同的链接按钮有不同的链接到不同的页面~
      【解决方案3】:

      将LinkBut​​ton的命令名称改为

      CommandName="Select"
      

      并使用GridView1_SelectIndexChanged 事件 首先获取选择行

      GridViewRow gvr =  new  GridView1.SelectedRow;
      

      FindControl 的行

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-29
        • 2012-01-19
        • 2020-01-13
        相关资源
        最近更新 更多