我做的一个页面,在条件查询后,或者全查询后总是没有数据出来,而且运行是正常的,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>
&nbsp;&nbsp; 终止时间:&nbsp; 
        <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>
&nbsp;&nbsp;
        <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();        }
    }}

解决方案 »

  1.   

    请问各位大侠,从何用c++ 从文本文件里读取一个如下的字符串数组然后修改后再写入另外一个文本文件? 原始文本文件 animo.txt数组:   class1  dog    23   cat  42
       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++代码
      

  2.   

    页面column是17个,但在cs文件sql是16个
      

  3.   

    GridView1.DataKeyNames = new string[] { "SurveyUnitID,SiteID,HappengenerationID" };
    这句是把值存入大datakeys,要这样写:
    GridView1.DataKeyNames = new string[] { "SurveyUnitID","SiteID","HappengenerationID" };
    取值的时候记住存入的顺序
      

  4.   

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

  5.   

    sql  语句的问题。  没有生成dataset
      

  6.   

    sql语句的问题吧,先放到查询分析器中看看没有结果出来
      

  7.   

    你既然在SQL语句中都用了中文了,在GridView中绑定字段那也就用中文名字吧
      

  8.   

    你先检查你的sql语句能不能查询出数据来。
      

  9.   

    执行以下你的sql语句看看有没有查到东西。
      

  10.   

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

  11.   

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

  12.   

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

  13.   


    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类型时出错。拜托你们看一下有什么问题。
      

  14.   

    断点调试下看问题出在哪个分支,另外可以使用数据库跟踪一下看看有没有执行SQL使用SqlDataAdapter不用conn.Open();那个SQL中列的别名太壮观了
      

  15.   

     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查询分析器里看看是不是查到数据了。。
      

  16.   

    SurveyUnit.RespondentID '调查对象编号'  这句有问题吧
      

  17.   

    确定是SQL语句的问题了,的确是没查出数据,是后面的textbox的写法貌似不对,但是我确定不了怎么将它转换为
    DateTime格式
      

  18.   


    myda.Fill(myds,"DT_Happengeneration_Sel");一般到这句的时候就会说转换为日期类型不成功。貌似是textbox输入的字符串没有转换为日期类型?
      

  19.   

    转换一下试试
    DateTime.Parse(this.txtStart.Text.Trim())
      

  20.   

    SQL语句是没有问题了,问题是数据没有传到DataSet里面去
      

  21.   

     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里面去。
    各位大侠,帮忙看看吧,我想结贴了