GridView在运行后不显示数据(C#+ASP.NET)

zhuzhengwei 2010-12-08 02:29:18
我做的一个页面,在条件查询后,或者全查询后总是没有数据出来,而且运行是正常的,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();

}
}



}
...全文
526 38 打赏 收藏 转发到动态 举报
写回复
用AI写文章
38 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhuzhengwei 2010-12-13
  • 打赏
  • 举报
回复
string sql = string.Format("SELECT Respondents.DrosophilaType AS '实蝇类型', ....,SurveyUnit.FillFormTime AS '填表时间', SurveyUnit.RespondentID ppengeneration.Endtime AS '结束时间' FROM Respondents INNER JOIN SurveyUnit ON Respon......SiteID = Happengeneration.SiteID WHERE Site.SiteName like '{0}%';", this.textbox1.Text.Trim());
SQL语句改写后,没有问题了,但是DataSet也有值,但是绑定的时候数据没有到GridView里面去。
各位大侠,帮忙看看吧,我想结贴了
zha0123 2010-12-11
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 myhope88 的回复:]
sql语句的问题吧,先放到查询分析器中看看没有结果出来
[/Quote]

理解同上
zhuzhengwei 2010-12-11
  • 打赏
  • 举报
回复
麻烦大家看看哦
zhuzhengwei 2010-12-10
  • 打赏
  • 举报
回复
SQL语句是没有问题了,问题是数据没有传到DataSet里面去
fengyunshier 2010-12-10
  • 打赏
  • 举报
回复
朋友,有这么久的时间,你调试的话早就出来了。
给你个建议吧,写代码不会调试的话,很难的。
很多问题都是在自己调试的过程中慢慢的搞定,并且调试有利于提高编程水平和解决问题的能力。
hb0513 2010-12-10
  • 打赏
  • 举报
回复
F9调试 看看数据源有值没
No1bigtooth 2010-12-10
  • 打赏
  • 举报
回复
F10单步运行下
柳泉青云 2010-12-10
  • 打赏
  • 举报
回复
转换一下试试
DateTime.Parse(this.txtStart.Text.Trim())
zhuzhengwei 2010-12-10
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 object_delusion 的回复:]

string sql = "";
sql = "SELECT Respondents.DrosophilaType AS '实蝇类型', SurveyUnit.SurveyUnitID AS '调查单位编号', SurveyUnit.UnitName AS '调查单位名称', SurveyUnit.SurveyPerson AS '调查人',SurveyUnit.FillFormTime……
[/Quote]

myda.Fill(myds,"DT_Happengeneration_Sel");一般到这句的时候就会说转换为日期类型不成功。貌似是textbox输入的字符串没有转换为日期类型?
Purple_Sky2010 2010-12-10
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 dengchenlu 的回复:]

sql 查询出来 你已经用 AS 把表头 变成中文的了
所以在前天绑定的时候也要用中文的
<asp:BoundField DataField="实蝇类型" HeaderText="实蝇类型" />
[/Quote]



+1
zhuzhengwei 2010-12-10
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 object_delusion 的回复:]

string sql = "";
sql = "SELECT Respondents.DrosophilaType AS '实蝇类型', SurveyUnit.SurveyUnitID AS '调查单位编号', SurveyUnit.UnitName AS '调查单位名称', SurveyUnit.SurveyPerson AS '调查人',SurveyUnit.FillFormTime……
[/Quote]


确定是SQL语句的问题了,的确是没查出数据,是后面的textbox的写法貌似不对,但是我确定不了怎么将它转换为
DateTime格式
hn_cjx 2010-12-10
  • 打赏
  • 举报
回复
SurveyUnit.RespondentID '调查对象编号' 这句有问题吧
柳泉青云 2010-12-10
  • 打赏
  • 举报
回复
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() + "'";
-----------------------------------------------------------------------------
加个断点调试一下,监视这条语句
打印出来放到Sql查询分析器里看看是不是查到数据了。。。。。。。。
chen_ya_ping 2010-12-10
  • 打赏
  • 举报
回复
我觉得还是这个问题自己调试一下,应该是可以解决的。
IHandler 2010-12-10
  • 打赏
  • 举报
回复
断点调试下看问题出在哪个分支,另外可以使用数据库跟踪一下看看有没有执行SQL

使用SqlDataAdapter不用conn.Open();

那个SQL中列的别名太壮观了
zhuzhengwei 2010-12-10
  • 打赏
  • 举报
回复
拜托大家帮忙看看,我一定会结贴的。急用!!!
zhuzhengwei 2010-12-10
  • 打赏
  • 举报
回复
难道是这里不能用SQL语句?
lx881021 2010-12-09
  • 打赏
  • 举报
回复
sql语句的问题吧
zhuzhengwei 2010-12-09
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 wxr0323 的回复:]

引用 12 楼 zzw411 的回复:

引用 4 楼 wwfgu00ing 的回复:

我怀疑是没有数据传到DataSet里面去。
那么检查你的sql语句,放到查询分析器上试试

的确是没出数据,依你看该怎么改下这些SQL语句?

你把SQL放在查询分析器里运行一下 看是不是GRIDVIEW里要显示的数据
SQL错误信息在发上来撒
[/Quote]



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类型时出错。拜托你们看一下有什么问题。
zhuzhengwei 2010-12-09
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 dengchenlu 的回复:]

sql 查询出来 你已经用 AS 把表头 变成中文的了
所以在前天绑定的时候也要用中文的
<asp:BoundField DataField="实蝇类型" HeaderText="实蝇类型" />
[/Quote]

你说的不错,但是问题依旧啊。呵呵
求解。麻烦你们了
加载更多回复(14)

62,046

社区成员

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

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

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

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