时间段筛选 出现“无法绑定由多个部分组成的标识符”

guuxy_G 2012-05-30 07:49:10
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"。

估计问题是出现在时间段判断代码里,

请各位老师看下!!
...全文
220 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
guuxy_G 2012-07-04
  • 打赏
  • 举报
回复
////如果ShippedDate不为空,生成dt1Sql语句
if (dt1 != "" || dt2 !="")
dtSql = " AND ShippedDate BETWEEN " + dt1 +" AND "+ dt2 +" ";
写错:

应该:
////如果DeliveryTime不为空,生成dtSql语句
if (dt1 != ""&& dt2 =="")
{
//Response.Redirect("~/Department/Purchase/Purchase.aspx");
Response.Write("<script>alert('请输入截止日期!')</script>");
Response.Write("<script>window.history.back();</script>");
Response.End();
}
if (dt1 == "" && dt2 != "")
{
Response.Write("<script>alert('请输入起始日期!')</script>");
Response.Write("<script>window.history.back();</script>");
Response.End();
}
if (dt1 != "" && dt2 != "")
{
DateTime dt11 = Convert.ToDateTime(dt1);
DateTime dt22 = Convert.ToDateTime(dt2);

if (dt11 <= dt22)
{
dtSql = " And DeliveryTime Between'" + dt11 + "'And '" + dt22 + "'";
}
else
{
Response.Write("<script>alert('输入错误!起始日期必须“小于”截止日期')</script>");
Response.Write("<script>window.history.back();</script>");
Response.End();
}

}
zhangdaowu5 2012-05-30
  • 打赏
  • 举报
回复
看看表的结构里面是否有你上面sql中的那写字段,然后后台跟一下你的dtSql,然后拿到数据库中去查询一下看看结果,然后再将你Gridview列表中绑定的字段和查询出来的字段比较一下就知道问题出在哪里了。
bdmh 2012-05-30
  • 打赏
  • 举报
回复
确保这些字段都在orders表中,dtSql = " AND ShippedDate BETWEEN " + dt1 +" AND "+ dt2 +" ";加上括号dtSql = " AND (ShippedDate BETWEEN " + dt1 +" AND "+ dt2 +") ";
把 OrderSql 显示出来,看看具体内容

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧