说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

DataGrid编辑模板问题?

编辑:说三道四文库 发布时间:2018-08-19 09:25
HTML文档下载 WORD文档下载 PDF文档下载
编辑模板如下:
<EditItemTemplate>
 qqmm:<asp:Label id="lblqqmm" Text='<%#DataBinder.Eval(Container.DataItem,"qqmm")%>' runat="server"/><br>
     codenum:<asp:TextBox id="tbcodenum" Text='<%#DataBinder.Eval(Container.DataItem,"codenum")%>' runat="server"/><br> 
 iiii:<asp:TextBox id="tbiiii" Text='<%#DataBinder.Eval(Container.DataItem,"iiii")%>' runat="server"/><br>
     xxmm:<asp:TextBox id="tbxxmm" Text='<%#DataBinder.Eval(Container.DataItem,"xxmm")%>' runat="server"/><br>
 xxee:<asp:TextBox id="tbxxee" Text='<%#DataBinder.Eval(Container.DataItem,"xxee")%>' runat="server"/><br>
 note:<asp:TextBox id="tbnote" TextMode="MultiLine" Text='<%#DataBinder.Eval(Container.DataItem,"note")%>' runat="server"/><br>
     <asp:LinkButton id="lbnUpdate" Text="更新" CommandName="update" runat="server"/>
 <asp:LinkButton id="lbnCancel" Text="取消" CommandName="cancel" runat="server"/>
  </EditItemTemplate>
更新语句如下:
  string qqmmstr=((Label)e.Item.FindControl("lblqqmm")).Text;
 string codenumstr=((TextBox)e.Item.FindControl("tbcodenum")).Text;
  string iiiistr=((TextBox)e.Item.FindControl("tbiiii")).Text;
  string xxmmstr=((TextBox)e.Item.FindControl("tbxxmm")).Text;
  string xxeestr=((TextBox)e.Item.FindControl("tbxxee")).Text;
  string notestr1=((TextBox)e.Item.FindControl("tbnote")).Text;

  //更新数据库中的数据
  string strUpdate="update table1 set iiii='"+iiiistr+"',codenum='"+codenumstr+"',xxmm='"+xxmmstr+"',xxee='"+xxeestr+"',note='"+notestr1+"' where qqmm='"+qqmmstr+"'";
  OleDbCommand MyComm=new OleDbCommand(strUpdate,MyConn);
  MyComm.ExecuteNonQuery();

做更新时提示sql语句出错,如果去掉note='"+notestr1+"'的更新就能正常运行,请求帮忙?谢谢
what's the data type of "note" in the database? can you check in debugger or write out the sql statement and run it manually in the query tool?

Response.Write("***" + strUpdate + "***");
思归大大在啊,呵呵,很高兴在早晨见到你,note 是文本类型
“/aspnet”应用程序中的服务器错误。
--------------------------------------------------------------------------------

UPDATE 语句的语法错误。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.Data.OleDb.OleDbException: UPDATE 语句的语法错误。

源错误: 


行 58:   string strUpdate="update table1 set iiii='"+iiiistr+"',codenum='"+codenumstr+"',xxmm='"+xxmmstr+"',xxee='"+xxeestr+"',note='"+notestr1+"' where qqmm='"+qqmmstr+"'";
行 59:   OleDbCommand MyComm=new OleDbCommand(strUpdate,MyConn);
行 60:   MyComm.ExecuteNonQuery();
行 61: 
行 62:   score.EditItemIndex=-1;
 

源文件: D:\aspnet\mytask\edit.aspx    行: 60 

response.write后的结果如下:
***update table1 set iiii='5',codenum='513',xxmm='55',xxee='55',note='5555' where qqmm='4444'***
what database are you using? can you run the sql statement in the query tool to make sure it works?

update table1 set iiii='5',codenum='513',xxmm='55',xxee='55',note='5555' where qqmm='4444'
access2000,用update table1 set iiii='5',codenum='513',xxmm='55',xxee='55',note='5555' where qqmm='4444'
做更新语句,更新qqmm=4444时,不去掉note="5555"还出同样的错误。如果去掉就正常。
note的数据类型跟xxee的数据类型一样么?
是的。都是一样的。就是access里默认的类型
那真是奇怪了,我原来还怀疑是你的数据里含有单引号',所以想建议你用带参数的更新SQL
所有代码:
<%@Page Language="c#" Debug="true" %>
<%@Import NameSpace="System.Data"%>
<%@Import NameSpace="System.Data.OleDb"%>
<Script Language="c#" runat="server">
OleDbConnection MyConn;
public void Page_Load(Object src,EventArgs e)
{
  //连接语句
   string MyConnStr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath(".")+"..\\mytask.mdb;";
   MyConn=new OleDbConnection(MyConnStr);
   MyConn.Open();

if(!Page.IsPostBack)
  {
    ListBind();
  }
}
//下面的ICollection中的"c"必大写
ICollection CreateSource()
{
 string strSel="Select * from table1 where rrqq='"+System.DateTime.Now.ToShortDateString()+"'";
   DataSet ds=new DataSet();

   OleDbDataAdapter MyAdapter=new OleDbDataAdapter(strSel,MyConn);
   MyAdapter.Fill(ds,"table1");

   return ds.Tables["table1"].DefaultView;
}

public void ListBind()
{
  score.DataSource=CreateSource();
  score.DataBind();
}

public void DataList_EditCommand(Object sender,DataListCommandEventArgs e)
{
  score.EditItemIndex=(int)e.Item.ItemIndex;
  ListBind();
}

public void DataList_CancelCommand(Object sender,DataListCommandEventArgs e)
{
  score.EditItemIndex=-1;
  ListBind();
}
public void DataList_UpdateCommand(Object sender,DataListCommandEventArgs e)
{
 
  string qqmmstr=((Label)e.Item.FindControl("lblqqmm")).Text;
 string codenumstr=((TextBox)e.Item.FindControl("tbcodenum")).Text;
  string iiiistr=((TextBox)e.Item.FindControl("tbiiii")).Text;
  string xxmmstr=((TextBox)e.Item.FindControl("tbxxmm")).Text;
  string xxeestr=((TextBox)e.Item.FindControl("tbxxee")).Text;
  string notestr1=((TextBox)e.Item.FindControl("tbnote")).Text;

  //更新数据库中的数据
  string s<%@Page Language="c#" Debug="true" %>
<%@Import NameSpace="System.Data"%>
<%@Import NameSpace="System.Data.OleDb"%>
<Script Language="c#" runat="server">
OleDbConnection MyConn;
public void Page_Load(Object src,EventArgs e)
{
  //连接语句
   string MyConnStr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath(".")+"..\\mytask.mdb;";
   MyConn=new OleDbConnection(MyConnStr);
   MyConn.Open();

if(!Page.IsPostBack)
  {
    ListBind();
  }
}
//下面的ICollection中的"c"必大写
ICollection CreateSource()
{
 string strSel="Select * from table1 where rrqq='"+System.DateTime.Now.ToShortDateString()+"'";
   DataSet ds=new DataSet();

   OleDbDataAdapter MyAdapter=new OleDbDataAdapter(strSel,MyConn);
   MyAdapter.Fill(ds,"table1");

   return ds.Tables["table1"].DefaultView;
}

public void ListBind()
{
  score.DataSource=CreateSource();
  score.DataBind();
}

public void DataList_EditCommand(Object sender,DataListCommandEventArgs e)
{
  score.EditItemIndex=(int)e.Item.ItemIndex;
  ListBind();
}

public void DataList_CancelCommand(Object sender,DataListCommandEventArgs e)
{
  score.EditItemIndex=-1;
  ListBind();
}
public void DataList_UpdateCommand(Object sender,DataListCommandEventArgs e)
{
 
  string qqmmstr=((Label)e.Item.FindControl("lblqqmm")).Text;
 string codenumstr=((TextBox)e.Item.FindControl("tbcodenum")).Text;
  string iiiistr=((TextBox)e.Item.FindControl("tbiiii")).Text;
  string xxmmstr=((TextBox)e.Item.FindControl("tbxxmm")).Text;
  string xxeestr=((TextBox)e.Item.FindControl("tbxxee")).Text;
  string notestr1=((TextBox)e.Item.FindControl("tbnote")).Text;

  //更新数据库中的数据
  string strUpdate="update table1 set iiii='"+iiiistr+"',codenum='"+codenumstr+"',xxmm='"+xxmmstr+"',xxee='"+xxeestr+"',note='"+notestr1+"' where qqmm='"+qqmmstr+"'";
string strup="update table1 set iiii='5',codenum='513',xxmm='55',xxee='55' where qqmm='3333'";
Response.Write("***" + strUpdate + "***");
  OleDbCommand MyComm=new OleDbCommand(strUpdate,MyConn);
  MyComm.ExecuteNonQuery();

  score.EditItemIndex=-1;
  ListBind();
}
</Script>

<html>
<head>
<title>DataList控件EditItemTemplate模板演示</title>
<body background="b6.gif">
<form runat="server"><div align="center">
  <asp:DataList id="score" width="100%" runat="server" HeaderStyle-BackColor="#aaaadd" AlternatingItemStyle-BackColor="Gainsboro" EditItemStyle-BackColor="#00efef" RepeatLayout="Table" OnEditCommand="DataList_EditCommand" OnUpdateCommand="DataList_UpdateCommand" OnCancelCommand="DataList_CancelCommand">
  <HeaderTemplate>
    编辑数据
  </HeaderTemplate>
  <ItemTemplate>
     xxmm:<%#DataBinder.Eval(Container.DataItem,"xxmm")%>
 qqmm:<%#DataBinder.Eval(Container.DataItem,"qqmm")%>
 rrqq:<%#DataBinder.Eval(Container.DataItem,"rrqq")%>
 <asp:LinkButton id="btnSelect" Text="编辑" CommandName="edit" runat="server"/>
  </ItemTemplate>
  <EditItemTemplate>
 qqmm:<asp:Label id="lblqqmm" Text='<%#DataBinder.Eval(Container.DataItem,"qqmm")%>' runat="server"/><br>
     codenum:<asp:TextBox id="tbcodenum" Text='<%#DataBinder.Eval(Container.DataItem,"codenum")%>' runat="server"/><br> 
 iiii:<asp:TextBox id="tbiiii" Text='<%#DataBinder.Eval(Container.DataItem,"iiii")%>' runat="server"/><br>
     xxmm:<asp:TextBox id="tbxxmm" Text='<%#DataBinder.Eval(Container.DataItem,"xxmm")%>' runat="server"/><br>
 xxee:<asp:TextBox id="tbxxee" Text='<%#DataBinder.Eval(Container.DataItem,"xxee")%>' runat="server"/><br>
 note:<asp:TextBox id="tbnote" TextMode="MultiLine" Text='<%#DataBinder.Eval(Container.DataItem,"note")%>' runat="server"/><br>
     <asp:LinkButton id="lbnUpdate" Text="更新" CommandName="update" runat="server"/>
 <asp:LinkButton id="lbnCancel" Text="取消" CommandName="cancel" runat="server"/>
  </EditItemTemplate>
 </asp:DataList>
</div>
</form>
</body>
</html>
trUpdate="update table1 set iiii='"+iiiistr+"',codenum='"+codenumstr+"',xxmm='"+xxmmstr+"',xxee='"+xxeestr+"',note='"+notestr1+"' where qqmm='"+qqmmstr+"'";
//string strup="update table1 set iiii='5',codenum='513',xxmm='55',xxee='55' where qqmm='3333'";
Response.Write("***" + strUpdate + "***");
  OleDbCommand MyComm=new OleDbCommand(strup,MyConn);
  MyComm.ExecuteNonQuery();

  score.EditItemIndex=-1;
  ListBind();
}
</Script>

<html>
<head>
<title>DataList控件EditItemTemplate模板演示</title>
<body background="b6.gif">
<form runat="server"><div align="center">
  <asp:DataList id="score" width="100%" runat="server" HeaderStyle-BackColor="#aaaadd" AlternatingItemStyle-BackColor="Gainsboro" EditItemStyle-BackColor="#00efef" RepeatLayout="Table" OnEditCommand="DataList_EditCommand" OnUpdateCommand="DataList_UpdateCommand" OnCancelCommand="DataList_CancelCommand">
  <HeaderTemplate>
    编辑数据
  </HeaderTemplate>
  <ItemTemplate>
     xxmm:<%#DataBinder.Eval(Container.DataItem,"xxmm")%>
 qqmm:<%#DataBinder.Eval(Container.DataItem,"qqmm")%>
 rrqq:<%#DataBinder.Eval(Container.DataItem,"rrqq")%>
 <asp:LinkButton id="btnSelect" Text="编辑" CommandName="edit" runat="server"/>
  </ItemTemplate>
  <EditItemTemplate>
 qqmm:<asp:Label id="lblqqmm" Text='<%#DataBinder.Eval(Container.DataItem,"qqmm")%>' runat="server"/><br>
     codenum:<asp:TextBox id="tbcodenum" Text='<%#DataBinder.Eval(Container.DataItem,"codenum")%>' runat="server"/><br> 
 iiii:<asp:TextBox id="tbiiii" Text='<%#DataBinder.Eval(Container.DataItem,"iiii")%>' runat="server"/><br>
     xxmm:<asp:TextBox id="tbxxmm" Text='<%#DataBinder.Eval(Container.DataItem,"xxmm")%>' runat="server"/><br>
 xxee:<asp:TextBox id="tbxxee" Text='<%#DataBinder.Eval(Container.DataItem,"xxee")%>' runat="server"/><br>
 note:<asp:TextBox id="tbnote" TextMode="MultiLine" Text='<%#DataBinder.Eval(Container.DataItem,"note")%>' runat="server"/><br>
     <asp:LinkButton id="lbnUpdate" Text="更新" CommandName="update" runat="server"/>
 <asp:LinkButton id="lbnCancel" Text="取消" CommandName="cancel" runat="server"/>
  </EditItemTemplate>
 </asp:DataList>
</div>
</form>
</body>
</html>
思归大哥,我找到问题所在啦,原因在于我的库设计中用了note做字段啦,只要不用这个做字段就成。改成其它名字就成啦,可能是note是系统默认的保留字吧。谢谢。您的热心帮助!以后还有问题需要请教。
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘