0

なんらかの理由で、オブジェクト参照がオブジェクトのインスタンスに設定されていないというエラーに遭遇しました..

これが私のコードです。事前に感謝します..

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            GetUserScraps(int.Parse(Request.QueryString["id"].ToString()));// this line have such error..

        }
    }

    public void GetUserScraps(int id)
    {
        string getUserScraps = "SELECT r.uid ,r.unm,p.photo,s.uid,s.unm,s.text,s.date,s.sid FROM register as r, status as s, profile as p WHERE p.pid.s.sid AND r.email=p.email AND s.id='" + Request.QueryString["id"].ToString() + "'";
        dt = dbClass.ConnectDataBaseReturnDT(getUserScraps);
        if (dt.Rows.Count > 0)
        {
            GridViewUserScraps.DataSource = dt;
            GridViewUserScraps.DataBind();
        }
    }
4

6 に答える 6

2

int.parsenull を処理できず、

あなたのRequest.QueryString["id"].ToString()値はnullです。

それが例外がある理由です:object refrence not set to an insance of an object

の適切な値を確認するか、いずれRequest.QueryString["id"].ToString()にしても null になるかどうかを確認してからconvert.toInt()、null 値を処理する関数を使用します。

于 2013-04-12T12:00:40.993 に答える
1

Request.QueryString["id"].ToString() に null 値があります。

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
          if(!string.IsNullOrEmpty(Request.QueryString["id"]))
             {
                GetUserScraps(int.Parse(Request.QueryString["id"].ToString()));
             }
        }
     }
    //Here u use id not querystring
    public void GetUserScraps(int id)
    {
        string getUserScraps = "SELECT r.uid ,r.unm,p.photo,s.uid,s.unm,s.text,s.date,s.sid FROM register as r, status as s, profile as p WHERE p.pid.s.sid AND r.email=p.email AND s.id='" + id + "'";
        dt = dbClass.ConnectDataBaseReturnDT(getUserScraps);
        if (dt.Rows.Count > 0)
        {
            GridViewUserScraps.DataSource = dt;
            GridViewUserScraps.DataBind();
        }
    }
于 2013-04-12T12:02:07.567 に答える
0
 GetUserScraps(Int32.Parse(Request.QueryString["id"] ?? "0"));
于 2013-04-12T12:09:39.237 に答える
0

これを使って:

protected void Page_Load(object sender, EventArgs e)
{
        if (!Page.IsPostBack)
        {
          if (Request.QueryString.Count > 0 && Request.QueryString["id"] != null)
          {
            GetUserScraps(int.Parse(Request.QueryString["id"].ToString()));// this line have such error..
          }
        }
    }

    public void GetUserScraps(int id)
    {
        string getUserScraps = "SELECT r.uid ,r.unm,p.photo,s.uid,s.unm,s.text,s.date,s.sid FROM register as r, status as s, profile as p WHERE p.pid.s.sid AND r.email=p.email AND s.id='" + Request.QueryString["id"].ToString() + "'";
        dt = dbClass.ConnectDataBaseReturnDT(getUserScraps);
        if (dt.Rows.Count > 0)
        {
            GridViewUserScraps.DataSource = dt;
            GridViewUserScraps.DataBind();
        }
 }

この助けを願っています。

于 2013-04-12T12:05:19.703 に答える
0

次のようにコードを変更するだけです。

protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            GetUserScraps(Convert.ToInt32(Request.QueryString["id"]));    
        }
    }

    public void GetUserScraps(int id)
    {
        string getUserScraps = "SELECT r.uid ,r.unm,p.photo,s.uid,s.unm,s.text,s.date,s.sid FROM register as r, status as s, profile as p WHERE p.pid.s.sid AND r.email=p.email AND s.id='" + id + "'";
        dt = dbClass.ConnectDataBaseReturnDT(getUserScraps);
        if (dt.Rows.Count > 0)
        {
            GridViewUserScraps.DataSource = dt;
            GridViewUserScraps.DataBind();
        }
    }
于 2013-04-12T12:07:14.930 に答える
0

Convert.ToString()null 値を処理する代わりに使用し、このページにクエリ文字列を.ToString()渡していることを確認してください。id

string strID=Convert.ToString(Request.QueryString["id"]);         
int intID;
if (int.TryParse(strID, out intID))
  { 
    GetUserScraps(intID);
  } 
于 2013-04-12T12:01:17.747 に答える