我现在gridview里有button
然后用RowCommand这个事件
判断他的commandname然后点击现在问题我很多行都有button怎么区别每一行的呢

解决方案 »

  1.   


    写个for循环, 类似于全选的那种..
      

  2.   


    或者不用RowCommand这个事件
      

  3.   


     <asp:LinkButton ID="linkbt_repertory" runat="server" CommandName="repertory" CommandArgument='<%# Eval("P_ID") %>'>库存管理</asp:LinkButton>
    //RowCommand事件 
    if (e.CommandName == "repertory")
            {
                Response.Redirect("Shop_Present_Repertory.aspx?ID=" + e.CommandArgument.ToString());
              //我这是跳转,你可以写操作事件
            }
      

  4.   


     <asp:LinkButton ID="linkbt_repertory" runat="server" CommandName='<%# Eval("P_ID") %>' >库存管理</asp:LinkButton>RowCommand事件 
    e.CommandName.ToString()
      

  5.   

    最简单的办法是将Button的CommandName设置为Select,
    在GridView的SelectedChanged事件中通过RowIndex区分!!
      

  6.   

    绑定CommandArgument="<%# Container.DataItemIndex %>"
    后台代码里面Rows[Convert.ToInt32(e.CommandArgument)]就能找到时那一行了。
      

  7.   

    用 CommandArgument 绑个ID
      

  8.   

    4楼貌似不是吧 不是跳转这个我好像查到了 <%# Container.DataItemIndex %>" 
    这是什么?
      

  9.   

    在设计界面button中添加 commandName='<%#Eval("主键") %>'
    在RowCommand时件里 e.commandName就是当前行的主键。
      

  10.   


    麻烦说详细一点我就是这么做的
     我这行里有textbox和button两个东西
      

  11.   

    e.CommandArgument就是行号(string),不过是object的string s=e.CommandArgument as string;
    int rowIndex=Int32.Parse(s);
      

  12.   

    先在前台 绑定一下:CommandArgument=" <%# Container.DataItemIndex %>" 
    然后再使用:int index = covert.int32(e.CommandArgument)
      

  13.   


    <asp:GridView ID="gvBranch" CssClass="headerCenter" runat="server" OnRowCommand="gvBranch_RowCommand"
                OnRowDataBound="gvBranch_RowDataBound" AutoGenerateColumns="False" DataKeyNames="BranchId"
                Width="98%" CellPadding="4" ForeColor="#333333" GridLines="None">
            <asp:TemplateField HeaderText="删除">
                        <ItemTemplate>
                            <asp:ImageButton ID="imgbtnDelete" runat="server" ImageUrl="~/Images/delete.gif"
                                AlternateText="删除" CausesValidation="false" CommandArgument='<%#Eval("BranchId") %>'
                                CommandName="De" />
                        </ItemTemplate>
             </asp:TemplateField>参考参考下吧
      

  14.   

            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    ViewState["editFlag"] = "0";//进入Edit的标志,1-进入,0-没进入 
                    ViewState["editNo"] = "-1"; //获得当前编辑的行号,-1没有获得 
                }
            }        protected virtual void OnRowCommand(Object sender, GridViewCommandEventArgs e)
            {
                if (e.CommandName.ToString() == "Edit")
                {
                    ViewState["editFlag"] = "1";//设置进入编辑 
                    ViewState["editNo"] = e.CommandArgument.ToString();//获得当前编辑的行号 
                }
                else if (e.CommandName.ToString() == "Cancel" || e.CommandName.ToString() == "Update")
                    ViewState["editFlag"] = "0";
            }
      

  15.   

    if (e.CommandName == "yuxl")
        {
          Response.Redirect("~/UserDetails.aspx?id=" + e.CommandArgument);
        }
    在按钮事件里判断是不是按了这按钮,如果是就执行,<asp:Button ID="Button1" runat="server" CommandArgument='<%# Eval("Id") %> ' OnClick="Button1_Click" Text="详细" CommandName="yuxl" OnCommand="Button1_Command" />
    在按钮的CommandArgument属性里写上要传的id,CommandName给按钮取个名称