时间段筛选 出现“无法绑定由多个部分组成的标识符”
test2.aspx.cs代码:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
public partial class test2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
//连接SQL SERVER
string ConnSqlServer = "Data Source=.;Initial Catalog=Northwind;Integrated Security=True;User ID=***; pwd=***";
SqlConnection Conn = new SqlConnection(ConnSqlServer);
//打开数据库
Conn .Open();
//获取客户名称和联系人名称
string OrderID = tbOrderID.Text.Trim();
string CustomerID = tbCustomerID.Text.Trim();
string EmployeeID = tbEmployeeID.Text.Trim();
string ShipCity = tbShipCity.Text.Trim();
string dt1 = tbShippedDateBegin.ToString ();
string dt2 = tbShippedDateEnd.ToString();
//声明查询语句变量
string OrderIDSql = "";
string CustomerIDSql = "";
string EmployeeIDSql = "";
string ShipCitySql = "";
//string dt1Sql = "";
//string dt2Sql = "";
string dtSql = "";
string OrderSql = "";
//如果OrderID不为空,生成OrderSql语句
if (OrderID != "")
OrderIDSql = " AND OrderID LIKE '%" + OrderID + "%'";
//如果CustomerID不为空,生成CustomerIDSql语句
if (CustomerID != "")
CustomerIDSql = " AND CustomerID LIKE '%" + CustomerID + "%'";
////如果EmployeeID不为空,生成EmployeeIDSql语句
if (EmployeeID != "")
EmployeeIDSql = " AND EmployeeID LIKE '%" + EmployeeID + "%'";
////如果ShipCityID不为空,生成ShipCitySql语句
if (ShipCity != "")
ShipCitySql = " AND ShipCity LIKE '%" + ShipCity + "%'";
////如果ShippedDate不为空,生成dt1Sql语句
if (dt1 != "" || dt2 !="")
dtSql = " AND ShippedDate BETWEEN " + dt1 +" AND "+ dt2 +" ";
//综合查询语句
OrderSql = "SELECT * FROM Orders WHERE OrderID<>''" + OrderIDSql + CustomerIDSql + EmployeeIDSql + ShipCitySql + dtSql;
//填充DataSet
SqlDataAdapter Adapter = new SqlDataAdapter(OrderSql, Conn);
DataSet Ds = new DataSet();
Adapter.Fill(Ds, "Orders");
//执行命令
gvClient.DataSource = Ds.Tables["Orders"];
gvClient.DataBind();
//关闭数据库
Conn.Close();
}
}
test.aspx代码
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="test2.aspx.cs" Inherits="test2" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script language="javascript" type="text/javascript" src="My97DatePicker/WdatePicker.js"></script>
</head>
<body>
<form id="form1" runat="server">
<div style="position: relative">
<br />
<asp:Label ID="Label1" runat="server" Text="订单编号:"></asp:Label>
<asp:TextBox ID="tbOrderID" runat="server"></asp:TextBox>
<asp:Label ID="Label2" runat="server" Text="客户编号:"></asp:Label>
<asp:TextBox ID="tbCustomerID" runat="server"></asp:TextBox>
<asp:Label ID="Label3" runat="server" Text="业务员编号:"></asp:Label>
<asp:TextBox ID="tbEmployeeID" runat="server"></asp:TextBox>
<asp:Label ID="Label4" runat="server" Text="收货城市:"></asp:Label>
<asp:TextBox ID="tbShipCity" runat="server"></asp:TextBox>
<br />
<br />
<asp:Label ID="Label5" runat="server" Text="查询发货日期间隔 //起:"></asp:Label>
<input id="tbShippedDateBegin" runat="server" type="text" onclick="WdatePicker()"/>
<asp:Label ID="Label6" runat="server" Text="查询发货日期间隔 //止:"></asp:Label>
<input id="tbShippedDateEnd" runat="server" type="text" onclick="WdatePicker()"/>
<br />
<br />
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="检 索"
style="text-align: center" />
<br />
<hr />
<br />
<asp:GridView ID="gvClient" runat="server" AutoGenerateColumns="False"
BackColor="#CCCCCC" BorderColor="#999999" BorderWidth="3px"
CellPadding="4" EnableModelValidation="True" ForeColor="Black"
BorderStyle="Solid" CellSpacing="2">
<Columns>
<asp:BoundField DataField="OrderID" HeaderText="订单编号" />
<asp:BoundField DataField="CustomerID" HeaderText="客户编号" />
<asp:BoundField DataField="EmployeeID" HeaderText="业务员编号" />
<asp:BoundField DataField="OrderDate" HeaderText="订单日期" />
<asp:BoundField DataField="RequiredDate" HeaderText="到货期" />
<asp:BoundField DataField="ShippedDate" HeaderText="发货日期" />
<asp:BoundField DataField="ShipVia" HeaderText="中转" />
<asp:BoundField DataField="Freight" HeaderText="运费" />
<asp:BoundField DataField="ShipName" HeaderText="船名" />
<asp:BoundField DataField="ShipAddress" HeaderText="收货地址" />
<asp:BoundField DataField="ShipCity" HeaderText="收货城市" />
<asp:BoundField DataField="ShipPostalCode" HeaderText="邮编" />
<asp:BoundField DataField="ShipCountry" HeaderText="收货国家" />
</Columns>
<FooterStyle BackColor="#CCCCCC" />
<HeaderStyle BackColor="Black" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#CCCCCC" ForeColor="Black"
HorizontalAlign="Left" />
<RowStyle BackColor="White" />
<SelectedRowStyle BackColor="#000099" ForeColor="White" Font-Bold="True" />
</asp:GridView>
<br />
<hr />
<br />
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
EnableModelValidation="True">
<Columns>
<asp:BoundField DataField="OrderID" HeaderText="订单编号" />
<asp:BoundField DataField="ProductID" HeaderText="产品编号" />
<asp:BoundField DataField="UnitPrice" HeaderText="单价" />
<asp:BoundField DataField="Quantity" HeaderText="数量" />
<asp:BoundField DataField="Discount" HeaderText="折扣" />
</Columns>
</asp:GridView>
<br />
</div>
</form>
</body>
</html>
测试出现:
2行:无法绑定由多个部分组成的标识符 "System.Web.UI.HtmlControls.HtmlInputText"。
无法绑定由多个部分组成的标识符 "System.Web.UI.HtmlControls.HtmlInputText"。
估计问题是出现在时间段判断代码里,
请各位老师看下!!
[解决办法]
确保这些字段都在orders表中,dtSql = " AND ShippedDate BETWEEN " + dt1 +" AND "+ dt2 +" ";加上括号dtSql = " AND (ShippedDate BETWEEN " + dt1 +" AND "+ dt2 +") ";
把 OrderSql 显示出来,看看具体内容
[解决办法]
看看表的结构里面是否有你上面sql中的那写字段,然后后台跟一下你的dtSql,然后拿到数据库中去查询一下看看结果,然后再将你Gridview列表中绑定的字段和查询出来的字段比较一下就知道问题出在哪里了。