DataGrid编辑更新时数据类型不匹配
zytp 2003-09-01 09:32:33 <%@Page Language="C#"%>
<%@Import Namespace="System.Data" %>
<%@Import Namespace="System.Data.OleDb" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head>
<title>Editing Data in a DataGrid Control</title>
</head>
<body bgcolor="#ffffff">
<span class="heading">Editing Data in a DataGrid Control</span><hr />
<%-- insert connection string script --%>
<div id="outError" runat="server" />
<ASP:Label id="lblSQL" runat="server" /><p />
<form runat="server">
<ASP:DataGrid id="MyDataGrid" runat="server"
CellPadding = "2"
EditItemStyle-BackColor="#eaeaea"
DataKeyField="id"
OnEditCommand="DoItemEdit"
OnUpdateCommand="DoItemUpdate"
OnCancelCommand="DoItemCancel"
AutoGenerateColumns="False">
<Columns>
<ASP:BoundColumn DataField="id" HeaderText="id" ReadOnly="True" />
<ASP:TemplateColumn HeaderText="Title">
<ItemTemplate>
<ASP:Label Text='<%# DataBinder.Eval(Container.DataItem, "Title") %>' runat="server" />
</ItemTemplate>
<EditItemTemplate>
<ASP:TextBox id="txtTitle" Size="60"
Text='<%# DataBinder.Eval(Container.DataItem, "Title") %>' runat="server" />
</EditItemTemplate>
</ASP:TemplateColumn>
<ASP:EditCommandColumn
EditText="Edit"
CancelText="Cancel"
UpdateText="Update" />
</Columns>
</ASP:DataGrid>
</form>
<!--------------------------------------------------------------------------->
<script language="C#" runat="server">
public void Page_Load(Object sender, EventArgs e)
{
if (!Page.IsPostBack)
BindDataGrid(); // create data set and bind to grid control
}
public void DoItemEdit(Object objSource, DataGridCommandEventArgs objArgs)
{
// set the EditItemIndex property of the grid to this item's index
MyDataGrid.EditItemIndex = objArgs.Item.ItemIndex;
BindDataGrid(); // bind the data and display it
}
public void DoItemUpdate(Object objSource, DataGridCommandEventArgs objArgs)
{
TextBox objTitleCtrl = (TextBox)objArgs.Item.FindControl("txtTitle");
string strConnect = "Provider=Microsoft.Jet.OLEDB.4.0 ;Data Source="+Server.MapPath("./databases/bns.mdb");
string strSQL = "UPDATE Booklist SET Title='" + objTitleCtrl.Text + "' "+ "WHERE id='" + MyDataGrid.DataKeys[objArgs.Item.ItemIndex] + "'";
try
{
OleDbConnection objConnect = new OleDbConnection(strConnect);
OleDbCommand objCommand = new OleDbCommand(strSQL,objConnect);
objConnect.Open();
objCommand.ExecuteNonQuery();
}
catch (Exception objError)
{
outError.InnerHtml = "<b>* Error while accessing data</b>.<br />"
+ objError.Message + "<br />" + objError.Source + "<p />";
return;
}
MyDataGrid.EditItemIndex = -1;
BindDataGrid(); // bind the data and display it
}
public void DoItemCancel(Object objSource, DataGridCommandEventArgs objArgs)
{
// set EditItemIndex property of grid to -1 to switch out of Edit mode
MyDataGrid.EditItemIndex = -1;
BindDataGrid();
}
public void BindDataGrid()
{
string strConnect = "Provider=Microsoft.Jet.OLEDB.4.0 ;Data Source="+Server.MapPath("./databases/WroxBooks.mdb");
string strSelect = "SELECT * FROM BookList ";
OleDbDataReader objDataReader;
try
{
OleDbConnection objConnect = new OleDbConnection(strConnect);
objConnect.Open();
OleDbCommand objCommand = new OleDbCommand(strSelect, objConnect);
objDataReader = objCommand.ExecuteReader();
}
catch (Exception objError)
{
outError.InnerHtml = "<b>* Error while accessing data</b>.<br />"
+ objError.Message + "<br />" + objError.Source + "<p />";
return;
}
MyDataGrid.DataSource = objDataReader;
MyDataGrid.DataBind();
}
</script>
</body>
</html>
当点击更新时objError提示错误,在标准表达式中数据类型不匹配
这是怎么回事,我是照着asp.net高级编程的源代码改的,就是跟原来的差了一个字段,就是不好使,!
哪位做过这样的程序,告知是什么回事,
或者你有这样的源代码给偶一份,谢谢