0

私はこれを使用しますcode for exporting gridview to Excel in asp.net - c#.....しかし私 はfound some error in my code

私はstored procedureforを使用してsql commandおり、私のコードビハインドは次のとおりです....

C# コード読み込みイベント ( 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();
    }
}

ラフル:

あなたのガイダンスに従って、私は変更を加えますが、それでもエラーが発生します....

そしてERROR、このようなもの... page_loadイベントでnull値を持っているため、エラーが発生します......

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

4

2 に答える 2

0

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

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

編集:

cmdpage_load でも同様に使用したい場合は、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、セッションに値を保存し、それを 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"];

次にcmd、必要に応じて page_load でも使用します

于 2012-05-07T15:36:27.100 に答える