我使用此code for exporting gridview to Excel in asp.net - c#
.....但我found some error in my code
我正在stored procedure
使用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();
}
}
RAHUL:
按照你的指示,我做了更改,但仍然给出错误....
和ERROR
这样的东西......在page_load事件中它的值为null,这就是它给出错误的原因......
对象引用未设置为对象的实例
答案 0 :(得分:0)
您在按钮事件中定义cmd
,如下所示,这是本地的范围。如果您需要全局,请尝试相应地进行定义。
protected void btn_insert_Click(object sender, EventArgs e)
{
try
{
SqlCommand cmd = new SqlCommand("GetExamResults", cn);
修改强>
如果你想在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
值存储在会话中并在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
答案 1 :(得分:0)
错误为您提供所需的信息。实际上,cmd确实不存在。您需要在Page_Load事件中创建SqlCommand的实例。从您提供的代码中,您只在按钮事件中定义cmd,而该事件不适用于Page_Load事件。