Dim conComsomol As SqlConnection
    Dim cmdSql As SqlCommand
    Dim strSql As String    Sub Page_Load()
        conComsomol = New SqlConnection("Server=localhost;UID=sa;PWD=twtsojie;Database=comsomol")
        If Not IsPostBack Then
            BindDataGrid()
        End If
    End Sub    Sub BindDataGrid()
        cmdSql = New SqlCommand("Select * From Comsomol_CadreList", conComsomol)
        conComsomol.Open()
        dgrdProducts.DataSource = cmdSql.ExecuteReader()
        dgrdProducts.DataBind()
        conComsomol.Close()
    End Sub    Sub dgrdProducts_EditCommand(ByVal s As Object, ByVal e As DataGridCommandEventArgs)
        dgrdProducts.EditItemIndex = e.Item.ItemIndex
        BindDataGrid()
    End Sub    Sub dgrdProducts_UpdateCommand(ByVal s As Object, ByVal e As DataGridCommandEventArgs)
        Dim intID As Integer
        Dim txtusername As TextBox
        Dim txtdepartment As TextBox
        Dim txtgender As TextBox
        Dim txtbirthday As TextBox
        Dim txtbusiness As TextBox
        Dim txtMobTel As TextBox
        Dim txtTel As TextBox
        intID = dgrdProducts.DataKeys(e.Item.ItemIndex)
        txtusername = e.Item.Cells(1).Controls(0)
        txtdepartment = e.Item.Cells(2).Controls(0)
        txtgender = e.Item.Cells(3).Controls(0)
        txtbirthday = e.Item.Cells(4).Controls(0)
        txtbusiness = e.Item.Cells(5).Controls(0)
        txtMobTel = e.Item.Cells(6).Controls(0)
        txtTel = e.Item.Cells(7).Controls(0)           
        strSql = "Update Comsomol_CadreList Set username=@username,department=@department,gender=@gender,birthday=@birthday,business=@business,MobTel=@MobTel,Tel=@Tel Where ID=@ID"        cmdSql = New SqlCommand(strSql, conComsomol)        
        cmdSql.Parameters.Add("@ID", intID)
        cmdSql.Parameters.Add("@username", txtusername)
        cmdSql.Parameters.Add("@department", txtdepartment)
        cmdSql.Parameters.Add("@gender", txtgender)
        cmdSql.Parameters.Add("@birthday", txtbirthday)
        cmdSql.Parameters.Add("@business", txtbusiness)
        cmdSql.Parameters.Add("@MobTel", txtMobTel)
        cmdSql.Parameters.Add("@Tel", txtTel)        conComsomol.Open()
        cmdSql.ExecuteNonQuery()
        conComsomol.Close()
        dgrdProducts.EditItemIndex = -1
        BindDataGrid()
    End Sub    Sub dgrdProducts_CancelCommand(ByVal s As Object, ByVal e As DataGridCommandEventArgs)
        dgrdProducts.EditItemIndex = -1
        BindDataGrid()
    End Sub
出错提示:
索引(从零开始)必须大于或等于零,且小于参数列表的大小。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.FormatException: 索引(从零开始)必须大于或等于零,且小于参数列表的大小。源错误: 
行 53:         
行 54:         cmdSql.Parameters.Add("@ID", intID)
行 55:         cmdSql.Parameters.Add("@username", txtusername)(本行出错)
行 56:         cmdSql.Parameters.Add("@department", txtdepartment)
行 57:         cmdSql.Parameters.Add("@gender", txtgender)
 源文件: K:\party2005\comsomol\Admin_comsomolCarde.aspx    行: 55 堆栈跟踪: 
[FormatException: 索引(从零开始)必须大于或等于零,且小于参数列表的大小。]
   System.Text.StringBuilder.AppendFormat(IFormatProvider provider, String format, Object[] args) +1232
   System.String.Format(IFormatProvider provider, String format, Object[] args) +65
   System.String.Format(String format, Object[] args) +10
   System.Data.Res.GetString(CultureInfo culture, String name, Object[] args)
   System.Data.Res.GetString(String name, Object[] args)
   System.Data.Common.ADP.UnknownDataType(Type dataType)
   System.Data.SqlClient.MetaType.GetMetaType(Object value)
   System.Data.SqlClient.SqlParameter.SetTypeInfoFromComType(Object value)
   System.Data.SqlClient.SqlParameter.set_Value(Object value)
   System.Data.SqlClient.SqlParameter..ctor(String parameterName, Object value)
   System.Data.SqlClient.SqlParameterCollection.Add(String parameterName, Object value)
   ASP.Admin_comsomolCarde_aspx.dgrdProducts_UpdateCommand(Object s, DataGridCommandEventArgs e) in K:\party2005\comsomol\Admin_comsomolCarde.aspx:55
   System.Web.UI.WebControls.DataGrid.OnUpdateCommand(DataGridCommandEventArgs e)
   System.Web.UI.WebControls.DataGrid.OnBubbleEvent(Object source, EventArgs e)
   System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args)
   System.Web.UI.WebControls.DataGridItem.OnBubbleEvent(Object source, EventArgs e)
   System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args)
   System.Web.UI.WebControls.LinkButton.OnCommand(CommandEventArgs e)
   System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
   System.Web.UI.Page.ProcessRequestMain()
实在是看不出错在哪儿~~~请指点一下。

解决方案 »

  1.   

    http://singlepine.cnblogs.com/articles/266538.html改成如下,试试
    strSql = "Update Comsomol_CadreList Set username=@username,department=@department,gender=@gender,birthday=@birthday,business=@business,MobTel=@MobTel,Tel=@Tel Where ID=@ID"cmdSql = New SqlCommand(strSql, conComsomol)          
    cmdSql.Parameters.Add("@username", SqlDbType.VarChar, 80).Value=txtusername
    cmdSql.Parameters.Add("@department", SqlDbType.VarChar, 80).Value=txtdepartment
    cmdSql.Parameters.Add("@gender", SqlDbType.VarChar, 80).Value=txtgender
    cmdSql.Parameters.Add("@birthday", SqlDbType.VarChar, 80).Value=txtbirthday
    cmdSql.Parameters.Add("@business", SqlDbType.VarChar, 80).Value=txtbusiness
    cmdSql.Parameters.Add("@MobTel", SqlDbType.VarChar, 80).Value=txtMobTel
    cmdSql.Parameters.Add("@Tel", SqlDbType.VarChar, 80).Value=txtTel
    cmdSql.Parameters.Add("@ID", SqlDbType.Int).Value=intID