2016-08-03 67 views
1

我每次运行此代码时都会收到此错误,并且我真的找不到此处缺少的内容,请帮助我谢谢预先'System.Data.OleDb.OleDbException'发生在System.Data.dll中,但未在用户代码中处理

错误: “System.Data.OleDb.OleDbException”在System.Data.dll中发生,但在用户代码中没有处理

附加信息:条件表达式中数据类型不匹配。

前端代码:

<asp:GridView ID="gvFunction" runat="server" AutoGenerateColumns="false" CssClass="Grid" 
    DataKeyNames="ID" OnRowDataBound="OnRowDataBound"> 
    <Columns> 
     <asp:TemplateField> 
      <ItemTemplate> 
       <img alt = "" style="cursor: pointer" src="images/plus.png" /> 
       <asp:Panel ID="pnlOrders" runat="server" Style="display: none"> 
        <asp:GridView ID="gvOrders" runat="server" AutoGenerateColumns="false" CssClass = "ChildGrid"> 
         <Columns> 
          <asp:BoundField ItemStyle-Width="150px" DataField="ID" HeaderText="ID" /> 


          <asp:BoundField ItemStyle-Width="150px" DataField="FunctionDate" HeaderText="Function Date" /> 
          <asp:BoundField ItemStyle-Width="150px" DataField="FunctionTime" HeaderText="Function Time" /> 
          <asp:BoundField ItemStyle-Width="150px" DataField="CelebrateName" HeaderText="Celebrate Name" /> 


         </Columns> 
        </asp:GridView> 
       </asp:Panel> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:BoundField ItemStyle-Width="150px" DataField="ID" HeaderText="ID" /> 
     <asp:BoundField ItemStyle-Width="150px" DataField="FunctionDate" HeaderText="Function Date" /> 
     <asp:BoundField ItemStyle-Width="150px" DataField="CelebrateName" HeaderText="Celebrate Name" /> 

    </Columns> 
</asp:GridView> 

后端代码:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Configuration; 
using System.Data.OleDb; 
using System.Data; 

namespace mntfinal 
{ 
    public partial class editreport : System.Web.UI.Page 
    { 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 

      gvFunction.DataSource = GetData("select ID, 
      FunctionDate, CelebrateName from function"); 
      gvFunction.DataBind(); 
     } 
    } 
    private static DataTable GetData(string query) 
    { 
     string strConnString = ConfigurationManager.ConnectionStrings 
     ["MandapamDatabase"].ConnectionString; 
     using (OleDbConnection con = new OleDbConnection(strConnString)) 
     { 
      using (OleDbCommand cmd = new OleDbCommand()) 
      { 
       cmd.CommandText = query; 
       using (OleDbDataAdapter sda = new OleDbDataAdapter()) 
       { 
        cmd.Connection = con; 
        sda.SelectCommand = cmd; 
        using (DataSet ds = new DataSet()) 
        { 
         DataTable dt = new DataTable(); 
         sda.Fill(dt); 
         return dt; 
        } 
       } 
      } 
     } 
    } 

    protected void OnRowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      string ID = gvFunction.DataKeys[e.Row.RowIndex].Value.ToString(); 
      GridView gvOrders = e.Row.FindControl("gvOrders") as GridView; 
      gvOrders.DataSource = GetData(string.Format("select ID,FunctionDate,FunctionTime,CelebrateName from function where ID='{0}'", ID)); 
      gvOrders.DataBind(); 
     } 
    } 
} 
} 

回答

1

The criteria expression is the part of the query containing the conditions, as in WHERE .

的问题似乎与您的where子句,你想比较ID列值(这可能是一个整数)用字符串。 试试这个,我已删除单引号各地{0}:

protected void OnRowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      string ID = gvFunction.DataKeys[e.Row.RowIndex].Value.ToString(); 
      GridView gvOrders = e.Row.FindControl("gvOrders") as GridView; 
      gvOrders.DataSource = GetData(string.Format("select ID,FunctionDate,FunctionTime,CelebrateName from function where ID={0}", ID)); 
      gvOrders.DataBind(); 
     } 
    } 
+1

非常感谢,解决了我的问题 –

0

是您的ID字段int或字符串字段?尝试将字符串更改为int,然后删除{0}周围的引号。

+0

它的自动编号,我猜它是一个int?如果是这样,你可以告诉我我可以如何替换value.Tostring()?因为我相当业余 –

+0

尝试@sachin提供的代码,我想这就够了。 – Dennisvdh

+0

非常感谢帮助,非常感谢 –

0

一个非常粗略的猜测是,该字符串ID包含一些奇怪的事情..例如“空”

检查什么 的String.Format( “选择ID,FunctionDate,FunctionTime,从功能,其中ID = '{0}' CelebrateName”,ID) 的样子,并在这里发表最后的SQL语句,我猜我们可以在这里看到原因。

相关问题