0

私はこのcode for exporting gridview to Excel in asp.net - c#を使用し.....しかし、私found some error in my code輸出GridViewのにExcelファイル - エラー

....

C#のコードを私はsql commandためstored procedureを使用していますし、私のコードが背後にある以下の通りです。ここロードイベント(Calling GetData method

public partial class Admin_ResultDisplay : System.Web.UI.Page 
    { 
    SqlConnection cn; 
    SqlCommand cmd = new SqlCommand(); 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     cn = new SqlConnection(ConfigurationManager.ConnectionStrings["DbConnect"].ConnectionString); 
     cn.Open(); 

     SqlCommand cmd = (SqlCommand)Session["sqlcmd"]; 
     DataTable dt = GetData(cmd); 
     GridView1.DataSource = dt; 
     GridView1.DataBind(); 
    } 

GetData() Method

private DataTable GetData(SqlCommand cmd) 
{ 
    DataTable dt = new DataTable(); 
    String strConnString = System.Configuration.ConfigurationManager.ConnectionStrings["DbConnect"].ConnectionString; 
    //SqlConnection cn = new SqlConnection(strConnString); 
    SqlDataAdapter sda = new SqlDataAdapter(); 

    Session["sqlcmd"] = cmd; 
    cmd.CommandType = CommandType.Text; // <= ERROR POINTED HERE.... 
    cmd.Connection = cn; 
    try 
    { 
     cn.Open(); 
     sda.SelectCommand = cmd; 
     sda.Fill(dt); 
     return dt; 
    } 
    catch (Exception ex) 
    { 
     throw ex; 
    } 
    finally 
    { 
     cn.Close(); 
     sda.Dispose(); 
     cn.Dispose(); 
    } 
} 

ラーフル:

私は変更を加えたが、それでもエラーを与えるあなたguidenceを1として....このような

そしてERROR何か...それは、Page_LoadイベントのthatsでNULL値を持っていますそれがエラーを返す理由......

オブジェクト参照がオブジェクトのインスタンスに設定されていない

+0

ofcourse、あなたはSqlCommand cmdを宣言していません。 DataTable dt = GetData(cmd)の前。 '//(ここにエラーを与えます)cmdは現在のコンテキストに存在しません '。また、プライベートDataTable GetData()ではなく、プライベートDataTable GetData(SqlCommand cmd)を宣言することをお勧めします。 – ray

答えて

0

これは、スコープ内でローカルな以下のようなボタンイベントでcmdを定義していることを示しています。グローバルに必要な場合は、それに応じて定義してみてください。

protected void btn_insert_Click(object sender, EventArgs e)  
{ 
try 
    { 
     SqlCommand cmd = new SqlCommand("GetExamResults", cn); 

EDIT:あなたが同様のPage_Loadでcmdにしたい場合は

その後、あなたはをPage_Loadで再びSPを呼び出し、それを使用することができます。同様

protected void Page_Load(object sender, EventArgs e) 
{ 
    cn = new SqlConnection(ConfigurationManager.ConnectionStrings  
    ["DbConnect"].ConnectionString); 
    SqlCommand cmd = new SqlCommand("GetExamResults", cn); 

しかし、あなたがセッションでcmd値を格納ANSをPage_Loadで再びそれを再利用するように、cmdのご使用は

その後
SqlCommand cmd = new SqlCommand(); 
// Your code goes here 

Session["sqlcmd"] = cmd; 
をPage_Loadで

protected void Page_Load(object sender, EventArgs e) 
    { 
     SqlCommand cmd = (SqlCommand)Session["sqlcmd"]; 

使用を乗り越えるところ示唆page_loadのcmdも必要に応じて

+0

あなたのご意見のためにrahul-thanx ...私はグローバルに試しましたが、** GetExamResults **プロシージャのパラメータが必要ですか?どうすればいいの?私にはサンプルソリューションを提供していますので、私は理解することができます... – mack28

+0

マック、私の編集を参照してください。 – Rahul

+0

Rahul - あなたの見解によると、私は変更を加えてもエラーを返します... page_loadイベントにnull値があります。なぜエラーが出るのですか?**オブジェクトリファレンスはオブジェクトのインスタンスに設定されていません** '私は私の質問でそれを見ることができる変更を加えました。... – mack28

0

このエラーは、必要な情報を提供しています。 cmdは実際には存在しません。 Page_LoadイベントでSqlCommandのインスタンスを作成する必要があります。あなたが提供したコードからは、Page_Loadイベントで利用できないボタンイベントでのみcmdを定義しています。

+0

CM Kanode - どこで私は変更を加える必要がありますか? – mack28

+1

Page_LoadイベントにSqlCommandのインスタンスを作成する必要があります。また、Rahulの提案に基づいて行った変更は不完全です。あなたはセッション変数を使用していますが、実際にセッション変数を最初に作成しましたか? –