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 事件中具有空值,这就是它给出错误的原因......

你调用的对象是空的

4

2 回答 2

0

那是因为您cmd在按钮事件中定义如下,它在范围内是本地的。如果您在全球范围内需要它,请尝试相应地定义。

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

编辑:

如果你也想cmd在 page_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值存储在 session 中,然后在 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 回答
0

该错误为您提供所需的信息。cmd 确实不存在。您需要在 Page_Load 事件中创建一个 SqlCommand 实例。从您提供的代码中,您仅在 Page_Load 事件不可用的按钮事件中定义 cmd 。

于 2012-05-07T15:38:11.703 回答