我做的一个页面,在条件查询后,或者全查询后总是没有数据出来,而且运行是正常的,VS没报错。
而我数据库当中是有对应的测试数据的。拜托大家看看。主要的问题是运行后没有数据显示,我怀疑是没有数据传到DataSet里面去。下面我贴出代码,
首先是页面的代码:<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<div style="height:160px;text-align:center">
<br /><br /><span style="font-size:xx-large;">发生世代信息管理
<br />
起始时间:<asp:TextBox ID="txtStart" runat="server" Height="24px" Width="80px"></asp:TextBox>
<cc1:CalendarExtender ID="txtStart_CalendarExtender" runat="server"
Enabled="True" TargetControlID="txtStart">
</cc1:CalendarExtender>
终止时间:
<asp:TextBox ID="txtEnd" runat="server" Height="24px" Width="80px"></asp:TextBox>
<cc1:CalendarExtender ID="txtEnd_CalendarExtender" runat="server"
Enabled="True" TargetControlID="txtEnd">
</cc1:CalendarExtender>
<asp:Button ID="btQuery" runat="server" Height="24px" Text="查询" Width="60px"
onclick="btQuery_Click"/>
</div>
<div style="overflow: scroll; height: 700px;width:780px; vertical-align:top; ">
<asp:GridView ID="GridView1" runat="server"
DataKeyNames="SurveyUnitID,SiteID,HappengenerationID"
onrowdatabound="GridView1_RowDataBound"
onrowcancelingedit="GridView1_RowCancelingEdit"
onrowediting="GridView1_RowEditing" AllowPaging="True"
onrowupdating="GridView1_RowUpdating" EmptyDataText="没有匹配数据!">
<Columns>
<asp:BoundField DataField="Respondents.DrosophilaTypeID" HeaderText="实蝇类型编号" Visible="False" />
<asp:BoundField DataField="Respondents.DrosophilaType" HeaderText="实蝇类型" />
<asp:BoundField DataField="SurveyUnit.SurveyUnitID" HeaderText="调查单位编号" Visible="False" />
<asp:BoundField DataField="SurveyUnit.UnitName" HeaderText="调查单位名称" />
<asp:BoundField DataField="SurveyUnit.SurveyPerson" HeaderText="调查人" />
<asp:BoundField DataField="SurveyUnit.FillFormTime" HeaderText="填表时间" />
<asp:BoundField DataField="SurveyUnit.RespondentID" HeaderText="调查对象编号" Visible="False"/>
<asp:BoundField DataField="Site.SiteID" HeaderText="地点编号" Visible="False"/>
<asp:BoundField DataField="Site.Longitude" HeaderText="经度" />
<asp:BoundField DataField="Site.Latitude" HeaderText="纬度" />
<asp:BoundField DataField="Site.Height" HeaderText="海拔" />
<asp:BoundField DataField="Site.SiteName" HeaderText="地名" />
<asp:BoundField DataField="Happengeneration.HappengenerationID" HeaderText="发生世代编号" Visible="False"/>
<asp:BoundField DataField="Happengeneration.Generation" HeaderText="世代" />
<asp:BoundField DataField="Happengeneration.Morphology" HeaderText="形态特征" />
<asp:BoundField DataField="Happengeneration.Startingtime" HeaderText="起始时间" />
<asp:BoundField DataField="Happengeneration.Endtime" HeaderText="结束时间" />
</Columns>
</asp:GridView>
<br />
<cc1:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
</cc1:ToolkitScriptManager>
</div></asp:Content>
源代码是下面的:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using DataAccessLayer;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;public partial class Ui_DataManage_Lifehistory_admin : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{ }
/// <summary>
/// 实现按时间段查询的查询及其控制;当没输入起始和截止时间时,默认为查询全部记录;
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btQuery_Click(object sender, EventArgs e)
{ if (txtStart.Text.Trim() == "" && txtEnd.Text.Trim() == "")
{
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["theconnection"].ConnectionString); SqlCommand cmd = new SqlCommand("DT_Happengeneration_Sel_Manage", conn);
cmd.CommandType = CommandType.StoredProcedure;
//SqlDataAdapter sda = new SqlDataAdapter(cmd);
//DataSet ds = new DataSet();
//sda.Fill(ds);
//GridView1.DataSource = ds.Tables[0];//引用强数据集中的DataTable;
//GridView1.DataSource = ds;
SqlDataAdapter myda = new SqlDataAdapter(cmd);
PestsDataSet myds = new PestsDataSet();
conn.Open();
myda.Fill(myds,"DT_Happengeneration_Sel");
GridView1.DataSource = myds.Tables["DT_Happengeneration_Sel"];
GridView1.DataKeyNames = new string[] { "SurveyUnitID,SiteID,HappengenerationID" };
GridView1.DataBind();
//conn.Close();
}
else if (txtStart.Text.Trim() != "" && txtEnd.Text.Trim() == "")
{
//PestDataAccess db = new PestDataAccess();
PestDataAccess.Message("提示:请输入终止时间!", "警告");
}
else if (txtStart.Text.Trim() == "" && txtEnd.Text.Trim() != "")
{
PestDataAccess.Message("提示:请输入起始时间!", "警告");
}
else
{
string sql = "";
sql = "SELECT Respondents.DrosophilaType AS '实蝇类型', SurveyUnit.SurveyUnitID AS '调查单位编号', SurveyUnit.UnitName AS '调查单位名称', SurveyUnit.SurveyPerson AS '调查人',SurveyUnit.FillFormTime AS '填表时间', SurveyUnit.RespondentID '调查对象编号',Site.SiteID AS '地点编号', Site.Longitude AS '经度', Site.Latitude AS '纬度', Site.Height AS '海拔',Site.SiteName AS '地名', Happengeneration.HappengenerationID AS '发生世代编号', Happengeneration.Generation AS '世代', Happengeneration.Morphology AS '形态特征',Happengeneration.Startingtime AS '起始时间', Happengeneration.Endtime AS '结束时间' FROM Respondents INNER JOIN SurveyUnit ON Respondents.RespondentID = SurveyUnit.RespondentID INNER JOIN Site ON SurveyUnit.SurveyUnitID = Site.SurveyUnitID INNER JOIN Happengeneration ON Site.SiteID = Happengeneration.SiteID WHERE SurveyUnit.FillFormTime>='" + txtStart.Text.Trim() + "' AND SurveyUnit.FillFormTime<='" + txtEnd.Text.Trim() + "'";
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["theconnection"].ConnectionString);
SqlCommand cmd = new SqlCommand(sql, conn);
//SqlDataAdapter sda = new SqlDataAdapter();
//sda.SelectCommand = cmd;
//conn.Open();
//DataSet ds = new DataSet();
//sda.Fill(ds);
//GridView1.DataSource = ds.Tables[0];//引用强数据集中的DataTable;
////GridView1.DataSource = ds;
SqlDataAdapter myda = new SqlDataAdapter(cmd);
PestsDataSet myds = new PestsDataSet();
conn.Open();
myda.Fill(myds,"DT_Happengeneration_Sel");
GridView1.DataSource = myds;
GridView1.DataKeyNames = new string[] { "SurveyUnitID,SiteID,HappengenerationID" };
GridView1.DataBind();
if (GridView1.Rows.Count <= 0)
{
//没有搜索到记录;
PestDataAccess.Message("提示:没有查询到匹配记录!", "提示");
}
conn.Close(); }
}}
而我数据库当中是有对应的测试数据的。拜托大家看看。主要的问题是运行后没有数据显示,我怀疑是没有数据传到DataSet里面去。下面我贴出代码,
首先是页面的代码:<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<div style="height:160px;text-align:center">
<br /><br /><span style="font-size:xx-large;">发生世代信息管理
<br />
起始时间:<asp:TextBox ID="txtStart" runat="server" Height="24px" Width="80px"></asp:TextBox>
<cc1:CalendarExtender ID="txtStart_CalendarExtender" runat="server"
Enabled="True" TargetControlID="txtStart">
</cc1:CalendarExtender>
终止时间:
<asp:TextBox ID="txtEnd" runat="server" Height="24px" Width="80px"></asp:TextBox>
<cc1:CalendarExtender ID="txtEnd_CalendarExtender" runat="server"
Enabled="True" TargetControlID="txtEnd">
</cc1:CalendarExtender>
<asp:Button ID="btQuery" runat="server" Height="24px" Text="查询" Width="60px"
onclick="btQuery_Click"/>
</div>
<div style="overflow: scroll; height: 700px;width:780px; vertical-align:top; ">
<asp:GridView ID="GridView1" runat="server"
DataKeyNames="SurveyUnitID,SiteID,HappengenerationID"
onrowdatabound="GridView1_RowDataBound"
onrowcancelingedit="GridView1_RowCancelingEdit"
onrowediting="GridView1_RowEditing" AllowPaging="True"
onrowupdating="GridView1_RowUpdating" EmptyDataText="没有匹配数据!">
<Columns>
<asp:BoundField DataField="Respondents.DrosophilaTypeID" HeaderText="实蝇类型编号" Visible="False" />
<asp:BoundField DataField="Respondents.DrosophilaType" HeaderText="实蝇类型" />
<asp:BoundField DataField="SurveyUnit.SurveyUnitID" HeaderText="调查单位编号" Visible="False" />
<asp:BoundField DataField="SurveyUnit.UnitName" HeaderText="调查单位名称" />
<asp:BoundField DataField="SurveyUnit.SurveyPerson" HeaderText="调查人" />
<asp:BoundField DataField="SurveyUnit.FillFormTime" HeaderText="填表时间" />
<asp:BoundField DataField="SurveyUnit.RespondentID" HeaderText="调查对象编号" Visible="False"/>
<asp:BoundField DataField="Site.SiteID" HeaderText="地点编号" Visible="False"/>
<asp:BoundField DataField="Site.Longitude" HeaderText="经度" />
<asp:BoundField DataField="Site.Latitude" HeaderText="纬度" />
<asp:BoundField DataField="Site.Height" HeaderText="海拔" />
<asp:BoundField DataField="Site.SiteName" HeaderText="地名" />
<asp:BoundField DataField="Happengeneration.HappengenerationID" HeaderText="发生世代编号" Visible="False"/>
<asp:BoundField DataField="Happengeneration.Generation" HeaderText="世代" />
<asp:BoundField DataField="Happengeneration.Morphology" HeaderText="形态特征" />
<asp:BoundField DataField="Happengeneration.Startingtime" HeaderText="起始时间" />
<asp:BoundField DataField="Happengeneration.Endtime" HeaderText="结束时间" />
</Columns>
</asp:GridView>
<br />
<cc1:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
</cc1:ToolkitScriptManager>
</div></asp:Content>
源代码是下面的:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using DataAccessLayer;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;public partial class Ui_DataManage_Lifehistory_admin : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{ }
/// <summary>
/// 实现按时间段查询的查询及其控制;当没输入起始和截止时间时,默认为查询全部记录;
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btQuery_Click(object sender, EventArgs e)
{ if (txtStart.Text.Trim() == "" && txtEnd.Text.Trim() == "")
{
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["theconnection"].ConnectionString); SqlCommand cmd = new SqlCommand("DT_Happengeneration_Sel_Manage", conn);
cmd.CommandType = CommandType.StoredProcedure;
//SqlDataAdapter sda = new SqlDataAdapter(cmd);
//DataSet ds = new DataSet();
//sda.Fill(ds);
//GridView1.DataSource = ds.Tables[0];//引用强数据集中的DataTable;
//GridView1.DataSource = ds;
SqlDataAdapter myda = new SqlDataAdapter(cmd);
PestsDataSet myds = new PestsDataSet();
conn.Open();
myda.Fill(myds,"DT_Happengeneration_Sel");
GridView1.DataSource = myds.Tables["DT_Happengeneration_Sel"];
GridView1.DataKeyNames = new string[] { "SurveyUnitID,SiteID,HappengenerationID" };
GridView1.DataBind();
//conn.Close();
}
else if (txtStart.Text.Trim() != "" && txtEnd.Text.Trim() == "")
{
//PestDataAccess db = new PestDataAccess();
PestDataAccess.Message("提示:请输入终止时间!", "警告");
}
else if (txtStart.Text.Trim() == "" && txtEnd.Text.Trim() != "")
{
PestDataAccess.Message("提示:请输入起始时间!", "警告");
}
else
{
string sql = "";
sql = "SELECT Respondents.DrosophilaType AS '实蝇类型', SurveyUnit.SurveyUnitID AS '调查单位编号', SurveyUnit.UnitName AS '调查单位名称', SurveyUnit.SurveyPerson AS '调查人',SurveyUnit.FillFormTime AS '填表时间', SurveyUnit.RespondentID '调查对象编号',Site.SiteID AS '地点编号', Site.Longitude AS '经度', Site.Latitude AS '纬度', Site.Height AS '海拔',Site.SiteName AS '地名', Happengeneration.HappengenerationID AS '发生世代编号', Happengeneration.Generation AS '世代', Happengeneration.Morphology AS '形态特征',Happengeneration.Startingtime AS '起始时间', Happengeneration.Endtime AS '结束时间' FROM Respondents INNER JOIN SurveyUnit ON Respondents.RespondentID = SurveyUnit.RespondentID INNER JOIN Site ON SurveyUnit.SurveyUnitID = Site.SurveyUnitID INNER JOIN Happengeneration ON Site.SiteID = Happengeneration.SiteID WHERE SurveyUnit.FillFormTime>='" + txtStart.Text.Trim() + "' AND SurveyUnit.FillFormTime<='" + txtEnd.Text.Trim() + "'";
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["theconnection"].ConnectionString);
SqlCommand cmd = new SqlCommand(sql, conn);
//SqlDataAdapter sda = new SqlDataAdapter();
//sda.SelectCommand = cmd;
//conn.Open();
//DataSet ds = new DataSet();
//sda.Fill(ds);
//GridView1.DataSource = ds.Tables[0];//引用强数据集中的DataTable;
////GridView1.DataSource = ds;
SqlDataAdapter myda = new SqlDataAdapter(cmd);
PestsDataSet myds = new PestsDataSet();
conn.Open();
myda.Fill(myds,"DT_Happengeneration_Sel");
GridView1.DataSource = myds;
GridView1.DataKeyNames = new string[] { "SurveyUnitID,SiteID,HappengenerationID" };
GridView1.DataBind();
if (GridView1.Rows.Count <= 0)
{
//没有搜索到记录;
PestDataAccess.Message("提示:没有查询到匹配记录!", "提示");
}
conn.Close(); }
}}
class2 goose 17 cow 24
class3 hen 12 cock 67
读取后,修改为
class1 hound 23 cat 42
class2 goose 17 cow 24
class3 pig 12 cock 67 写入 new.txt 求完整C++代码
这句是把值存入大datakeys,要这样写:
GridView1.DataKeyNames = new string[] { "SurveyUnitID","SiteID","HappengenerationID" };
取值的时候记住存入的顺序
那么检查你的sql语句,放到查询分析器上试试
SQL错误信息在发上来撒
所以在前天绑定的时候也要用中文的
<asp:BoundField DataField="实蝇类型" HeaderText="实蝇类型" />
SELECT Respondents.DrosophilaType AS '实蝇类型', SurveyUnit.SurveyUnitID AS '调查单位编号',
SurveyUnit.UnitName AS '调查单位名称', SurveyUnit.SurveyPerson AS '调查人',
SurveyUnit.FillFormTime AS '填表时间', SurveyUnit.RespondentID AS '调查对象编号', Site.SiteID AS '地点编号',
Site.Longitude AS '经度', Site.Latitude AS '纬度', Site.Height AS '海拔', Site.SiteName AS '地名',
Happengeneration.HappengenerationID AS '发生世代编号', Happengeneration.Generation AS '世代',
Happengeneration.Morphology AS '形态特征', Happengeneration.Startingtime AS '起始时间',
Happengeneration.Endtime AS '结束时间'
FROM Respondents INNER JOIN
SurveyUnit ON Respondents.RespondentID = SurveyUnit.RespondentID INNER JOIN
Site ON SurveyUnit.SurveyUnitID = Site.SurveyUnitID INNER JOIN
Happengeneration ON Site.SiteID = Happengeneration.SiteID
WHERE (SurveyUnit.FillFormTime >= '" + txtStart.Text.Trim() + "') AND (SurveyUnit.FillFormTime <= '" + txtEnd.Text.Trim() + "')
这个是测试的SQL语句,产生的错误如下:
错误源:Net SqlClient Data Provider
错误信息:Conversion failed when converting date and /or time from character string.
怀疑是textbox输入的日期转换为date类型时出错。拜托你们看一下有什么问题。
sql = "SELECT Respondents.DrosophilaType AS '实蝇类型', SurveyUnit.SurveyUnitID AS '调查单位编号', SurveyUnit.UnitName AS '调查单位名称', SurveyUnit.SurveyPerson AS '调查人',SurveyUnit.FillFormTime AS '填表时间', SurveyUnit.RespondentID '调查对象编号',Site.SiteID AS '地点编号', Site.Longitude AS '经度', Site.Latitude AS '纬度', Site.Height AS '海拔',Site.SiteName AS '地名', Happengeneration.HappengenerationID AS '发生世代编号', Happengeneration.Generation AS '世代', Happengeneration.Morphology AS '形态特征',Happengeneration.Startingtime AS '起始时间', Happengeneration.Endtime AS '结束时间' FROM Respondents INNER JOIN SurveyUnit ON Respondents.RespondentID = SurveyUnit.RespondentID INNER JOIN Site ON SurveyUnit.SurveyUnitID = Site.SurveyUnitID INNER JOIN Happengeneration ON Site.SiteID = Happengeneration.SiteID WHERE SurveyUnit.FillFormTime>='" + txtStart.Text.Trim() + "' AND SurveyUnit.FillFormTime<='" + txtEnd.Text.Trim() + "'";
-----------------------------------------------------------------------------
加个断点调试一下,监视这条语句
打印出来放到Sql查询分析器里看看是不是查到数据了。。
DateTime格式
myda.Fill(myds,"DT_Happengeneration_Sel");一般到这句的时候就会说转换为日期类型不成功。貌似是textbox输入的字符串没有转换为日期类型?
DateTime.Parse(this.txtStart.Text.Trim())
SQL语句改写后,没有问题了,但是DataSet也有值,但是绑定的时候数据没有到GridView里面去。
各位大侠,帮忙看看吧,我想结贴了