问错地方了
应该是在.NET版里面的

解决方案 »

  1.   

    print iIndex值来看看是否为-1
      

  2.   

    1.CommandArgument属性在前台有绑定没?记得有的控件需要手工设置。
    2.datakeys在前台声明中设置没?
    3.帖出aspx代码
      

  3.   

    asp:gridview id="CustomersGridView" 
            datasourceid="CustomersSqlDataSource" 
            autogeneratecolumns="true"
            autogeneratedeletebutton="true"
            autogenerateeditbutton="true"
            datakeynames="CustomerID"     设置了吗?
            runat="server">
          </asp:gridview>
      

  4.   

    给你个完整版的参考一下,还有问问题,帖代码的时候,一定要帖全.帖关键.
    <%@ Page language="C#" %><script runat="server">  void CustomersGridView_RowCommand(Object sender, GridViewCommandEventArgs e)
      {
        // If multiple buttons are used in a GridView control, use the
        // CommandName property to determine which button was clicked.
        if(e.CommandName=="Add")
        {
          // Convert the row index stored in the CommandArgument
          // property to an Integer.
          int index = Convert.ToInt32(e.CommandArgument);///////////////////////
                
          // Retrieve the row that contains the button clicked 
          // by the user from the Rows collection.
          GridViewRow row = CustomersGridView.Rows[index];
                
          // Create a new ListItem object for the customer in the row.     
          ListItem item = new ListItem();
          item.Text = Server.HtmlDecode(row.Cells[2].Text);
                
          // If the customer is not already in the ListBox, add the ListItem 
          // object to the Items collection of the ListBox control. 
          if (!CustomersListBox.Items.Contains(item))
          {
            CustomersListBox.Items.Add(item);
          }           
        }
      }  void CustomersGridView_RowCreated(Object sender, GridViewRowEventArgs e)
      {
        
        // The GridViewCommandEventArgs class does not contain a 
        // property that indicates which row's command button was
        // clicked. To identify which row's button was clicked, use 
        // the button's CommandArgument property by setting it to the 
        // row's index.
        if(e.Row.RowType == DataControlRowType.DataRow)
        {
          // Retrieve the LinkButton control from the first column.
          LinkButton addButton = (LinkButton)e.Row.Cells[0].Controls[0];
              
          // Set the LinkButton's CommandArgument property with the
          // row's index.
          addButton.CommandArgument = e.Row.RowIndex.ToString();/////////////////////这里?
        }  }
        
    </script><html>
      <body>
        <form runat="server">
            
          <h3>GridView RowCommand Example</h3>
                
          <table width="100%">         
            <tr>                
              <td width="50%">
                        
                <asp:gridview id="CustomersGridView" 
                  datasourceid="CustomersSource"
                  allowpaging="true" 
                  autogeneratecolumns="false"
                  onrowcommand="CustomersGridView_RowCommand"
                  onrowcreated="CustomersGridView_RowCreated"  
                  runat="server">
                    
                  <columns>
                    <asp:buttonfield buttontype="Link" 
                      commandname="Add" 
                      text="Add"/>
                    <asp:boundfield datafield="CustomerID" 
                      headertext="Customer ID"/>
                    <asp:boundfield datafield="CompanyName" 
                      headertext="Company Name"/> 
                    <asp:boundfield datafield="City" 
                      headertext="City"/>         
                  </columns>
                    
                </asp:gridview>
                        
              </td>
                        
              <td valign="top" width="50%">
                        
                Customers: <br/>
                <asp:listbox id="CustomersListBox"
                  runat="server"/> 
                        
              </td>  
            </tr>      
          </table>
                
          <!-- This example uses Microsoft SQL Server and connects  -->
          <!-- to the Northwind sample database. Use an ASP.NET     -->
          <!-- expression to retrieve the connection string value   -->
          <!-- from the Web.config file.                            -->
          <asp:sqldatasource id="CustomersSource"
            selectcommand="Select [CustomerID], [CompanyName], [City] From [Customers]"
            connectionstring="<%$ ConnectionStrings:NorthWindConnectionString%>" 
            runat="server"/>
                
        </form>
      </body>
    </html>
      

  5.   

    string sUserID = gv_User.DataKeys[iIndex].Value.ToString(); 
    建议楼主 看看 datakeynames 设置了吗?