Sub UpdateInfo(ByVal sender As Object, ByVal e As DataGridCommandEventArgs)
Dim conn As System.Data.OleDb.OleDbConnection = New System.Data.OleDb.OleDbConnection(ConfigurationSettings.AppSettings("LawConnStr"))
Dim TextBox1 As TextBox
Dim TextBox2 As TextBox
Dim TextBox3 As TextBox
Dim TextBox4 As TextBox
Dim myKeyid As Integer = DataGrid1.DataKeys(e.Item.ItemIndex)
Dim cc As String = myKeyid
TextBox1 = e.Item.Cells(2).Controls(0)
TextBox2 = e.Item.Cells(3).Controls(0)
TextBox3 = e.Item.Cells(4).Controls(0)
TextBox4 = e.Item.Cells(5).Controls(0)
Dim sql As String = "Update pic set pic1=@pic1,pic2=@pic2,pic3=@pic3,lei=@lei where id='" & cc & "'"
Dim Cmd As New System.Data.OleDb.OleDbCommand(sql, conn)
Cmd.Parameters.Add(New System.Data.OleDb.OleDbParameter("@pic1", System.Data.OleDb.OleDbType.VarChar, Nothing))
Cmd.Parameters.Add(New System.Data.OleDb.OleDbParameter("@pic2", System.Data.OleDb.OleDbType.VarChar, Nothing))
Cmd.Parameters.Add(New System.Data.OleDb.OleDbParameter("@pic3", System.Data.OleDb.OleDbType.VarChar, Nothing))
Cmd.Parameters.Add(New System.Data.OleDb.OleDbParameter("@lei", System.Data.OleDb.OleDbType.VarChar, Nothing))
Cmd.Parameters("@pic1").Value = TextBox1.Text
Cmd.Parameters("@pic2").Value = TextBox2.Text
Cmd.Parameters("@pic3").Value = TextBox3.Text
Cmd.Parameters("@lei").Value = TextBox4.Text
conn.Open()
Cmd.ExecuteNonQuery()
conn.Close()
DataGrid1.EditItemIndex = -1
BindGrid()
End Sub异常详细信息: System.Data.OleDb.OleDbException: 标准表达式中数据类型不匹配。源错误: 行 85: Cmd.Parameters("@lei").Value = TextBox4.Text
行 86: conn.Open()
行 87: Cmd.ExecuteNonQuery()
行 88: conn.Close()
行 89: DataGrid1.EditItemIndex = -1
源文件: D:\website\xmbao\admin.aspx.vb 行: 87 堆栈跟踪: [OleDbException (0x80040e07): 标准表达式中数据类型不匹配。]
System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(Int32 hr) +41
System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) +174
System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) +92
System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult) +65
System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) +112
System.Data.OleDb.OleDbCommand.ExecuteNonQuery() +66
xmbao.admin.UpdateInfo(Object sender, DataGridCommandEventArgs e) in D:\website\xmbao\admin.aspx.vb:87
System.Web.UI.WebControls.DataGrid.OnUpdateCommand(DataGridCommandEventArgs e) +109
System.Web.UI.WebControls.DataGrid.OnBubbleEvent(Object source, EventArgs e) +507
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +26
System.Web.UI.WebControls.DataGridItem.OnBubbleEvent(Object source, EventArgs e) +106
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +26
System.Web.UI.WebControls.LinkButton.OnCommand(CommandEventArgs e) +121
System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +115
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +138
System.Web.UI.Page.ProcessRequestMain() +1277这个错误怎么解决啊? 请高手帮我改一下啊,谢谢!!
Dim conn As System.Data.OleDb.OleDbConnection = New System.Data.OleDb.OleDbConnection(ConfigurationSettings.AppSettings("LawConnStr"))
Dim TextBox1 As TextBox
Dim TextBox2 As TextBox
Dim TextBox3 As TextBox
Dim TextBox4 As TextBox
Dim myKeyid As Integer = DataGrid1.DataKeys(e.Item.ItemIndex)
Dim cc As String = myKeyid
TextBox1 = e.Item.Cells(2).Controls(0)
TextBox2 = e.Item.Cells(3).Controls(0)
TextBox3 = e.Item.Cells(4).Controls(0)
TextBox4 = e.Item.Cells(5).Controls(0)
Dim sql As String = "Update pic set pic1=@pic1,pic2=@pic2,pic3=@pic3,lei=@lei where id='" & cc & "'"
Dim Cmd As New System.Data.OleDb.OleDbCommand(sql, conn)
Cmd.Parameters.Add(New System.Data.OleDb.OleDbParameter("@pic1", System.Data.OleDb.OleDbType.VarChar, Nothing))
Cmd.Parameters.Add(New System.Data.OleDb.OleDbParameter("@pic2", System.Data.OleDb.OleDbType.VarChar, Nothing))
Cmd.Parameters.Add(New System.Data.OleDb.OleDbParameter("@pic3", System.Data.OleDb.OleDbType.VarChar, Nothing))
Cmd.Parameters.Add(New System.Data.OleDb.OleDbParameter("@lei", System.Data.OleDb.OleDbType.VarChar, Nothing))
Cmd.Parameters("@pic1").Value = TextBox1.Text
Cmd.Parameters("@pic2").Value = TextBox2.Text
Cmd.Parameters("@pic3").Value = TextBox3.Text
Cmd.Parameters("@lei").Value = TextBox4.Text
conn.Open()
Cmd.ExecuteNonQuery()
conn.Close()
DataGrid1.EditItemIndex = -1
BindGrid()
End Sub异常详细信息: System.Data.OleDb.OleDbException: 标准表达式中数据类型不匹配。源错误: 行 85: Cmd.Parameters("@lei").Value = TextBox4.Text
行 86: conn.Open()
行 87: Cmd.ExecuteNonQuery()
行 88: conn.Close()
行 89: DataGrid1.EditItemIndex = -1
源文件: D:\website\xmbao\admin.aspx.vb 行: 87 堆栈跟踪: [OleDbException (0x80040e07): 标准表达式中数据类型不匹配。]
System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(Int32 hr) +41
System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) +174
System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) +92
System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult) +65
System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) +112
System.Data.OleDb.OleDbCommand.ExecuteNonQuery() +66
xmbao.admin.UpdateInfo(Object sender, DataGridCommandEventArgs e) in D:\website\xmbao\admin.aspx.vb:87
System.Web.UI.WebControls.DataGrid.OnUpdateCommand(DataGridCommandEventArgs e) +109
System.Web.UI.WebControls.DataGrid.OnBubbleEvent(Object source, EventArgs e) +507
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +26
System.Web.UI.WebControls.DataGridItem.OnBubbleEvent(Object source, EventArgs e) +106
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +26
System.Web.UI.WebControls.LinkButton.OnCommand(CommandEventArgs e) +121
System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +115
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +138
System.Web.UI.Page.ProcessRequestMain() +1277这个错误怎么解决啊? 请高手帮我改一下啊,谢谢!!
Dim sql As String = "Update pic set pic1=@pic1,pic2=@pic2,pic3=@pic3,lei=@lei where id='" & cc & "'"
你的数据库中id是字符类型的吗?
<ItemTemplate>
<asp:TextBox width="60px" runat="server" id="TextBox6" Text='<%# DataBinder.Eval(Container.DataItem,"txt3")%>'>
</asp:TextBox>
</ItemTemplate>
------------------------
TextBox1.Width=Unit.Pixel("宽值.")请问如果换成模板列,在更新时怎么把textbox加到datagrid里啊?
-----------------------
<asp:TemplateColumn HeaderText="栏目标题">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem,"Lanmu")%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="LanmuTitle" Text='<%# DataBinder.Eval(Container.DataItem,"Lanmu")%>' Runat=server Width="100%" />
</EditItemTemplate>
</asp:TemplateColumn>引用TextBox:
CType(e.Item.FindControl("LanmuTitle"), TextBox).Text
----------------------
Public Sub DataGrid1_UpDate(ByVal sender As Object, ByVal e As DataGridCommandEventArgs)
Dim updatecomm As New SqlCommand("update lanmus Set Lanmu=@lanmu where ID=" + e.Item.Cells(0).Text, conn)'更新Sql
updatecomm.Parameters.Add("@lanmu", CType(e.Item.FindControl("LanmuTitle"), TextBox).Text.Trim.ToString())'给updatecomm参数.
Try
conn.Open()
updatecomm.ExecuteNonQuery()
Catch ex As Exception
Throw ex
Finally
conn.Close()
End Try
DataGrid1.EditItemIndex = -1
ShowLanmu()'重新绑定数据
End Sub
Public Sub DataGrid1_UpDate(ByVal sender As Object, ByVal e As DataGridCommandEventArgs)
'code
End Sub
Cmd.Parameters("@lei").Value = CType(e.Item.FindControl("LanmuTitle"), TextBox).Text
Dim TextBox1 as String=CType(e.Item.FindControl("LanmuTitle"), TextBox).Text.Trim.ToString()至于更新时,怎么写,那就得看你的需要了.
Sub UpdateInfo(ByVal sender As Object, ByVal e As DataGridCommandEventArgs)
Dim conn As System.Data.OleDb.OleDbConnection = New System.Data.OleDb.OleDbConnection(ConfigurationSettings.AppSettings("LawConnStr"))
Dim myKeyid As Integer = DataGrid1.DataKeys(e.Item.ItemIndex)
Dim cc As String = myKeyid
Dim sql As String = "Update pic set pic1=@pic1,txt1=@txt1,pic2=@pic2,txt2=@txt2,pic3=@pic3,txt3=@txt3,lei=@lei where id=" & cc
Dim Cmd As New System.Data.OleDb.OleDbCommand(sql, conn)
Cmd.Parameters.Add(New System.Data.OleDb.OleDbParameter("@pic1", System.Data.OleDb.OleDbType.VarChar, 10))
Cmd.Parameters.Add(New System.Data.OleDb.OleDbParameter("@txt1", System.Data.OleDb.OleDbType.VarChar, 10))
Cmd.Parameters.Add(New System.Data.OleDb.OleDbParameter("@pic2", System.Data.OleDb.OleDbType.VarChar, 10))
Cmd.Parameters.Add(New System.Data.OleDb.OleDbParameter("@txt2", System.Data.OleDb.OleDbType.VarChar, 10))
Cmd.Parameters.Add(New System.Data.OleDb.OleDbParameter("@pic3", System.Data.OleDb.OleDbType.VarChar, 10))
Cmd.Parameters.Add(New System.Data.OleDb.OleDbParameter("@txt3", System.Data.OleDb.OleDbType.VarChar, 10))
Cmd.Parameters.Add(New System.Data.OleDb.OleDbParameter("@lei", System.Data.OleDb.OleDbType.VarChar, 10))
Cmd.Parameters("@pic1").Value = CType(e.Item.FindControl("TextBox1"), TextBox).Text
Cmd.Parameters("@txt1").Value = CType(e.Item.FindControl("TextBox2"), TextBox).Text
Cmd.Parameters("@pic2").Value = CType(e.Item.FindControl("TextBox3"), TextBox).Text
Cmd.Parameters("@txt2").Value = CType(e.Item.FindControl("TextBox4"), TextBox).Text
Cmd.Parameters("@pic3").Value = CType(e.Item.FindControl("TextBox5"), TextBox).Text
Cmd.Parameters("@txt3").Value = CType(e.Item.FindControl("TextBox6"), TextBox).Text
Cmd.Parameters("@lei").Value = CType(e.Item.FindControl("TextBox7"), TextBox).Text
conn.Open()
Cmd.ExecuteNonQuery()
conn.Close()
DataGrid1.EditItemIndex = -1
BindGrid()
End Sub
不用客气.这儿是CSDN嘛...
<HeaderStyle Width="80px"></HeaderStyle>
<ItemStyle Width="80px"></ItemStyle>
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem,"pic1")%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="Textbox1" Text='<%# DataBinder.Eval(Container.DataItem,"pic1")%>' Runat=server Width="100%" />
</EditItemTemplate>
</asp:TemplateColumn>
你可以这样:
<%# DataBinder.Eval(Container.DataItem, "title").ToString().Substring(0,20)%>
不过你如果你的字符长度不够20会出错的。
你可以在.cs中写啊,判断一下长度再Substring就行了。
<%# Left(DataBinder.Eval(Container.DataItem, "title"),20)%>
这样不成吗?
<asp:TemplateColumn>
<ItemStyle Width="100px"></ItemStyle>
<ItemTemplate>
<!--绑定-->
</ItemTemplate>
</asp:TemplateColumn>
</Columns>