想点击gridview1中的newstitle时跳到newscontents.aspx中显示新闻信息newscontents.aspx.cs
public partial class newscontents : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        SqlConnection objconn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["sql_connstr"].ToString());
        objconn.Open();        SqlCommand objcmd = new SqlCommand("NewsDetail",objconn);
        objcmd.CommandType = CommandType.StoredProcedure;           SqlParameter paramNewsID = new SqlParameter("@NewsID",SqlDbType.Int,4);
        paramNewsID.Value = Convert.ToInt32(Request.QueryString["NewsID"].ToString());出错
        objcmd.Parameters.Add(paramNewsID);
提示:试图在代码中引用不存在的对象时,会发生 NullReferenceException。例如,您可能试图在未先使用 New 关键字的情况下使用对象,或试图使用值设置为 null(在 Visual Basic 中为 Nothing)的对象。
        SqlDataReader dr = objcmd.ExecuteReader();
        if (dr.Read())
        {
            tbxtitle.Text = dr["NewsTitle"].ToString();
            tbxcontents.Text = dr["NewsContents"].ToString();
            tbxpublisher.Text = dr["NewsPublisher"].ToString();
            tbxdatetime.Text=dr["NewsDatetime"].ToString();
        }
        else
        {
            Response.Write("Sorry,没有该新闻信息!");
            Response.End();
        }
    }news.aspx
<asp:gridview>
.....
Columns>
                <asp:BoundField DataField="NewsID" HeaderText="新闻编号" ReadOnly="True" SortExpression="NewsID" />
                <asp:HyperLinkField DataNavigateUrlFields="NewsID" Target="_blank" DataNavigateUrlFormatString="newscontents.aspx?NewsID={0}}" 
                 HeaderText="新闻标题" DataTextField="NewsTitle" /> 
                <asp:BoundField DataField="NewsPublisher" HeaderText="新闻作者" ReadOnly="True" SortExpression="NewsPublisher"/>
                <asp:BoundField DataField="NewsDatetime" HeaderText="发布时间" HtmlEncode="false" ReadOnly="True" SortExpression="NewsDatetime" DataFormatString="{0:yyyy-MM-dd hh:mm:ss}"/>
            </Columns>
.....
</gridview>
数据库中有newsid的值呀,怎么是空呢?如我说的不清楚可以再补充
请大家帮个忙哈,先谢谢了!!!!!!!

解决方案 »

  1.   


    if(Request.QueryString["NewsID"].ToString()!=null)
    paramNewsID.Value = Convert.ToInt32(Request.QueryString["NewsID"].ToString());猜测
      

  2.   

    1.确定已经读出数据
    2.确定url里有NewsID值.
    3.异常捕获,修改为兼容性较强的代码,例如:
    paramNewsID.Value = Convert.ToInt32(Request.QueryString["NewsID"]==null?"-1":Request.QueryString["NewsID"].ToString());
      

  3.   

    Request.QueryString["NewsID"].ToString());读不到值啊,或者值不是数字型
      

  4.   

    if(Request.QueryString["NewsID"].ToString()!=null && Request.QueryString["NewsID"].ToString()!="")
    paramNewsID.Value = Convert.ToInt32(Request.QueryString["NewsID"].ToString()); 
    int.parse