asp:TemplateField HeaderText="用户操作">
                <ItemTemplate>
                    <asp:Button ID="EditBtn" runat="server" Text="编辑"  CommandName="Modify" CommandArgument='<%# Eval("UserID") %>' />
                </ItemTemplate>
</asp:TemplateField>protected void UserView_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        string commandName = e.CommandName;
        switch (commandName)
        {
            case "Modify":
                Response.Redirect("EditUser.aspx?userID="+ Convert.ToInt32(e.CommandArgument));//就是这里链接不过去,获取不到值
                break;
            case "Delete":
                break;        }
    }

解决方案 »

  1.   

    case "Modify": 
           Response.Redirect(string.Format("EditUser.aspx?userID={0}",e.CommandArgument));//就是这里链接不过去,获取不到值 
            break; 
      

  2.   

        protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            int index = ((e.CommandSource as Button).NamingContainer as GridViewRow).RowIndex;
            string userID = GridView1.Rows[index].Cells[0].Text;
            //下面你的操作
        }
      

  3.   

    不过这种做法都不标准,标准的方法是设置编辑按钮的CommandName为Edit,然后在RowEditing事件中处理同样,得到主键的方式也不正规,应该是设置GridView的DataKeyNames为userID,然后通过 GridView1.DataKeys[index].Value.ToString()得到
      

  4.   

    支持1楼,加上 CommandArgument就可以了
      

  5.   

    我只能说莫名其妙。问题剩下的最多也就是UserID可能包含中文,需要Server.UrlEncoder()一下,目标页再DeCode的问题。不行就是见鬼了。自己好好琢磨琢磨吧!
      

  6.   

    参考   http://topic.csdn.net/u/20080916/15/d22842d0-64c1-414c-8bd2-36f5edc74141.html中我的回复。你可以在设计窗口中进入编GridView设计窗口,选中UserID那一列,把它变为模板列,这样方便看到它的ID到底是什么。
      

  7.   

    代码     一个模板中的Button.FindControl(另一个模板中的Label的ID)完全可以返回你要的UserID所绑定的那个控件。
      

  8.   

    “在DataGrid中可以在DataGrid_ItemCommand(object source, DataGridCommandEventArgs e)事件中通过e.Item.Cells[0].Text获取到,但是在GridView_RowCommand(object sender, GridViewCommandEventArgs e)事件中不知道如何获取”
    楼主到底用的2003还是2005 太诡异了
      

  9.   

    按照楼上们的方法 出现了这个错误 无论怎么改 就是有这个错误 不懂...:
    http://topic.csdn.net/u/20081003/16/59b7d898-dd2a-4dce-b961-d77ac432ba7b.html
      

  10.   

    你只要设计为<asp:TemplateField HeaderText="用户操作">
                    <ItemTemplate>
                        <asp:Label ID="Label1" runat="server" Text='<%# Bind("UserID") %>' style="display:none" />
                        <asp:Button ID="EditBtn" runat="server" Text="编辑"  OnClick="EditBtn_Click“>
                    </ItemTemplate>
                </asp:TemplateField>而后就可以在后台    protected void EditBtn_Click(object sender, EventArgs e)
        {
            Button bt = sender as Button;
            Label lb = bt.FindControl("Label1") as Label;
            Response.Redirect("EditUser.aspx?userID="+lb.Text);
        }用不着那种上溯到GridView去的劳什子做法。
    另外,把GridView和DetailsView放在一个页面上(例如左右摆放),每当GridView上选择一行时可以及时到DetailsView中编辑(其它时候DetailsView的Visible为False),这样的页面更实用一些。