一个很简单的查询页面,有一个textbox用于输入关键字,一个button提交,一个gridview用于显示查询结果,但运行时总是显示不出表中第一行记录,当查询结果只有一条时,gridview就什么也不显示,连表头也看不见;查询结果多条时不显示第一条记录,后面的记录可以显示出来,这是怎么回事?请大家帮忙解答,谢谢了,我刚接触asp.net2 ,急急急! 代码如下: 
Default.aspx:<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %> <!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> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
        <table> 
            <tr> 
                <td style="width: 100px"> 
                </td> 
                <td style="width: 100px"> 
                </td> 
                <td style="width: 100px"> 
                </td> 
            </tr> 
            <tr> 
                <td style="width: 100px"> 
                    <asp:TextBox ID="cph" runat="server"> </asp:TextBox> </td> 
                <td style="width: 100px"> 
                    <asp:Button ID="cx" runat="server" OnClick="cx_Click" Text="查询" /> </td> 
                <td style="width: 100px"> 
                </td> 
            </tr> 
            <tr> 
                <td colspan="3"> 
                    <asp:GridView ID="GridView1" runat="server" > 
                    </asp:GridView> 
                </td> 
            </tr> 
        </table> 
    
    </div> 
    </form> 
</body> 
</html> Default.aspx.cs代码如下:using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {    }
    protected void cx_Click(object sender, EventArgs e)
    {
        SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["con"].ConnectionString);
        con.Open();
        //string cmdtext = "select * from view1 where car_hphm='"+cph+"'";
        string ph = cph.Text.ToString();
        string cmdtext = "select * from car_memer where car_hphm='"+ph+"'";
        //string cmdtext = "select * from car_memer";
        SqlCommand cmd = new SqlCommand(cmdtext,con);
        SqlDataReader dr = cmd.ExecuteReader();
        if (dr.Read())
        {
            Response.Write("查询到数据");
            this.GridView1.DataSource = dr;
            this.GridView1.DataBind();
            dr.Close();
            con.Close();
        }
        else
        {
            Response.Write("没有查询到数据");
        }
    }
}

解决方案 »

  1.   

    dr.Read()这个判断不好,本身就读了一行,用dr.HasRows判断
      

  2.   

    哈哈,太谢谢你了 happyfamily  真是我的救星啊!!顺便问一下:
    实现用户查询功能只能在button_click函数里写上面的代码吗?这样体现不出asp.net2.0有多方便啊,我发现用鼠标拖动的方式给gridview配置一个数据源,数据源的select语句的where子句可以选择为textbox的值,但是如何用button触发查询呢?或者还有别的更好的方法实现这种用户查询功能?请不吝赐教,我看的书上都没有这种例子啊