CType(E.Item.Cells(1).Controls(0), TextBox).Text 
改为
CType(E.Item.findcontrol(”id号“), TextBox).Text

解决方案 »

  1.   

    please check whether the textbox in datagrid cell is controls[0] or controls[1]
    but if still not successfully.try
    CType(E.Item.FindControl("controlid"),TextBox)
      

  2.   

    还有一招:
    string uid = E.Item.UniqueID + ":";
    if(Request.Form[uid+"au_lname"]==null)
    {
    sqlComm.Parameters("@DesFile").Value = Request.Form[uid+"controlid"].ToString();
    }
    else{
    sqlComm.Parameters("@DesFile").Value =DBNull.Value;
    }
    这是c#的。
      

  3.   

    对不起:
    string uid = E.Item.UniqueID + ":";
    if(Request.Form[uid+"controlid"]==null)
    {
    sqlComm.Parameters("@DesFile").Value = Request.Form[uid+"controlid"].ToString();
    }
    else{
    sqlComm.Parameters("@DesFile").Value =DBNull.Value;
    }
      

  4.   

    谢谢楼上各位兄弟
    (1)seesea125(雨天) :
    CType(E.Item.Cells(1).Controls(0), TextBox).Text 改为CType(E.Item.findcontrol(”id号“), TextBox).Text
    出现错误:
    sqlComm.Parameters("@BluePID").Value = CType(E.Item.FindControl("BluePrintID"), TextBox).Text
    未将对象引用设置到对象的实例。
    (2) wacle([Smile!]) :
    按照你第一种方法,出现index超出界限的错误...
    我的DataGrid是这样子的
    编辑   删除   BluePrintID   Title  PicDatetime  PicType1  PicType2  DesignFile
    (3)xrll() 
    我看不明白你写的能否解释一下...
      

  5.   

    http://www.erp800.com/net_lover/ShowDetail.asp?id=8ADE535F-AD40-4DE3-A962-A64B4FAF12C4
      

  6.   

    net_lover(孟子E章)
    能否看看我的问题出在哪?
    在c#里面我这个没问题,转为VB.NET就出现问题了...
    我想应该是很小的错误,可是我一下午就是没想出来...
      

  7.   

    你可试一下:
    SqlConnection conycjy=new SqlConnection(ConfigurationSettings.AppSettings ["str_sqlcon"].ToString());
    conycjy.Open();
    for(int int_i=0;int_i<=(DataGrid1.Items.Count -1);int_i++)

    CheckBox chkadd=(CheckBox)DataGrid1.Items[int_i].FindControl("chkbox");
    if(chkadd.Checked ==true)
    {
    cmdinsert=new SqlCommand("insert into studInfo(StudId,StudName,Sex,EnrollmentDate,Email,Password)" +
     " values(@StudId,@StudName,@Sex,@EnrollmentDate,@Email,@Password)",conycjy);
    cmdinsert.Parameters.Add(new SqlParameter("@StudId",SqlDbType.Char,15));
    TextBox txtmybox1=(TextBox)DataGrid1.Items[int_i].FindControl("txtbox1");
    cmdinsert.Parameters["@StudId"].Value =txtmybox1.Text;
    cmdinsert.Parameters.Add(new SqlParameter("@StudName",SqlDbType.NVarChar,15));
    TextBox txtmybox2=(TextBox)DataGrid1.Items[int_i].FindControl("txtbox2");
    cmdinsert.Parameters["@StudName"].Value =txtmybox2.Text;
    cmdinsert.Parameters.Add(new SqlParameter("@Sex",SqlDbType.Char,2));
    DropDownList dropmylist1=(DropDownList)DataGrid1.Items[int_i].FindControl("droplist1");
    cmdinsert.Parameters["@Sex"].Value =dropmylist1.SelectedItem.Text;
    cmdinsert.Parameters.Add(new SqlParameter("@EnrollmentDate",SqlDbType.DateTime,8));
    TextBox txtmybox3=(TextBox)DataGrid1.Items[int_i].FindControl("txtbox3");
    cmdinsert.Parameters["@EnrollmentDate"].Value =txtmybox3.Text;
    cmdinsert.Parameters.Add(new SqlParameter("@Email",SqlDbType.Char,50));
    TextBox txtmybox4=(TextBox)DataGrid1.Items[int_i].FindControl("txtbox4");
    cmdinsert.Parameters["@Email"].Value =txtmybox4.Text;
    cmdinsert.Parameters.Add(new SqlParameter("@Password",SqlDbType.Char,15));
    cmdinsert.Parameters["@Password"].Value ="12345";
    try
    {
    cmdinsert.ExecuteNonQuery();
    Label1.Text ="添加成功";
    }
    catch
    {
    Label1.Text ="添加失败";
    }


    }

    }
    conycjy.Close();

    }
      

  8.   

    现在倒是没什么问题了,但是却不能正确更新,也就是点击“更新”并不保存到数据库中..
    (1)
    <ASP:DATAGRID id="MyDataGrid" runat="server" Width="500px" DataKeyField="BluePrintID" OnDeleteCommand="MyDataGrid_Delete" OnEditCommand="MyDataGrid_Edit" OnUpdateCommand="MyDataGrid_Update" OnCancelCommand="MyDataGrid_Cancel" PageSize="5" BackColor="#CCCCFF" BorderColor="Black" CellPadding="3" Font-Name="Verdana" HeaderStyle-BackColor="#aaaadd" AutoGenerateColumns="False" Font-Names="Verdana" Font-Size="8pt">
    <HeaderStyle BackColor="#AAAADD"></HeaderStyle>
    <Columns>
    <asp:EditCommandColumn ButtonType="LinkButton" UpdateText="更新" HeaderText="编辑" CancelText="取消" EditText="编辑"></asp:EditCommandColumn>
    <asp:ButtonColumn Text="删除" HeaderText="删除" CommandName="Delete"></asp:ButtonColumn>
    <asp:BoundColumn DataField="BluePrintID" SortExpression="BluePrintID" HeaderText="图纸编号"></asp:BoundColumn>
    <asp:BoundColumn DataField="Title" SortExpression="Title" HeaderText="标题名称"></asp:BoundColumn>
    <asp:BoundColumn DataField="PicDatetime" SortExpression="PicDatetime" HeaderText="日期"></asp:BoundColumn>
    <asp:BoundColumn DataField="PicType1" SortExpression="PicType1" HeaderText="图纸类型1"></asp:BoundColumn>
    <asp:BoundColumn DataField="PicType2" SortExpression="PicType2" HeaderText="图纸类型2"></asp:BoundColumn>
    <asp:BoundColumn DataField="DesignFile" SortExpression="DesignFile" HeaderText="相关设计文件"></asp:BoundColumn>
    </Columns>
    </ASP:DATAGRID>
    (2) Public Sub MyDataGrid_Update(ByVal sender As Object, ByVal E As DataGridCommandEventArgs)
            Dim strSql As String = "Update BluePrintInfo Set BluePrintID=@BluePID,Title=@Tile,PicDatetime=@PicDtime,PicType1=@Pic1,PicType2=@Pic2,DesignFile=@DesFile where BluePrintID=@BluePID"
            Dim sqlConn As New SqlConnection()
            sqlConn = ConnectTo("ProjectFrame")
            sqlConn.Open()
            Dim sqlComm As SqlCommand = New SqlCommand(strSql, sqlConn)
            sqlComm.Parameters.Add(New SqlParameter("@BluePID", SqlDbType.NVarChar, 50))
            sqlComm.Parameters("@BluePID").Value = CType(E.Item.Cells(2).Controls(0), TextBox).Text    '出现错误,类型转换无效
            'sqlComm.Parameters("@BluePID").Value = CType(E.Item.FindControl("BluePrintID"), TextBox).Text   '出现错误,未将对象引用设置到对象的实例...        sqlComm.Parameters.Add(New SqlParameter("@Tile", SqlDbType.NVarChar, 50))
            sqlComm.Parameters("@Tile").Value = CType(E.Item.Cells(3).Controls(0), TextBox).Text
            'sqlComm.Parameters("@Tile").Value = CType(E.Item.FindControl("Title"), TextBox).Text        sqlComm.Parameters.Add(New SqlParameter("@PicDtime", SqlDbType.DateTime, 36))
            sqlComm.Parameters("@PicDtime").Value = CType(E.Item.Cells(4).Controls(0), TextBox).Text
            'sqlComm.Parameters("@PicDtime").Value = CType(E.Item.FindControl("PicDatetime"), TextBox).Text        sqlComm.Parameters.Add(New SqlParameter("@Pic1", SqlDbType.Int, 10))
            sqlComm.Parameters("@Pic1").Value = CType(E.Item.Cells(5).Controls(0), TextBox).Text
            'sqlComm.Parameters("@Pic1").Value = CType(E.Item.FindControl("PicType1"), TextBox).Text        sqlComm.Parameters.Add(New SqlParameter("@Pic2", SqlDbType.Int, 10))
            sqlComm.Parameters("@Pic2").Value = CType(E.Item.Cells(6).Controls(0), TextBox).Text
            'sqlComm.Parameters("@Pic2").Value = CType(E.Item.FindControl("PicType2"), TextBox).Text        sqlComm.Parameters.Add(New SqlParameter("@DesFile", SqlDbType.NVarChar, 50))
            sqlComm.Parameters("@DesFile").Value = CType(E.Item.Cells(6).Controls(0), TextBox).Text
            'sqlComm.Parameters("@DesFile").Value = CType(E.Item.FindControl("DesignFile"), TextBox).Text        Try
                sqlComm.ExecuteNonQuery()
            Catch
                Return
            End Try
            sqlConn.Close()
            BindGrid("BluePrintInfo")
        End Sub
      

  9.   

    将BindGrid()放在is IsPostBack 之中!
      

  10.   

    Page_Load事件中:
    If Not (IsPostBack)
                BindGrid()
            End If
      

  11.   

    原来BindGrid就是放在IsPostBack中.......