2012-09-13 20 views
1

我已經宣佈在C#中的類作爲在訪問表全局聲明,而是填滿的另一種方法

public partial class admin_AnalyseQuery : System.Web.UI.Page 
{ 
    llvsMasterpage m; 
    private const string ASCENDING = " ASC"; 
    private const string DESCENDING = " DESC"; 
    DataTable dt; 

這裏一個全局變量,我創建了一個數據表DT作爲全局變量嗎?

現在數據表DT填充方法如屏幕截圖

「BindDatagvAnalyse」 - 這是將數據綁定到網格視圖的方法。

private void BindDatagvAnalyse() 
    { 
     Guid SchoolID = Guid.Parse(School.SelectedValue); 
     Guid YearID = Guid.Parse(Years.SelectedValue); 
     Guid VersionID = Guid.Parse(Versions.SelectedValue); 
     Guid LessonID = Guid.Parse(Lessons.SelectedValue); 
     Guid TeacherID = Guid.Parse(Teachers.SelectedValue); 
     Guid LearningunitID = Guid.Parse(Learningunits.SelectedValue); 
     Guid DomainID = Guid.Parse(Domain.SelectedValue); 
     pnllbl.Visible = true; 
     string Schoolname = School.SelectedItem.Text; 
     string Yearname = Years.SelectedItem.Text; 
     string Versionname = Versions.SelectedItem.Text; 
     string Lessonnmae = Lessons.SelectedItem.Text; 
     string Teachername = Teachers.SelectedItem.Text; 
     string Learningunitname = Learningunits.SelectedItem.Text; 
     string Domainname = Domain.SelectedItem.Text; 
     lblinfo.Text = Schoolname + "/" + Yearname + "/" + Lessonnmae + "/" + Versionname + "/" + Teachername + "/" + Domainname + "/" + Learningunitname; 
     // Guid PeriodID = Guid.Parse(Periods.SelectedValue); 
     dt = m.bussinesCollection.BussinesDomain.GetAllDetailsForgvanalyse(SchoolID, YearID, LessonID, VersionID, TeacherID, LearningunitID, DomainID); 
     int count = dt.Rows.Count; 
     lblcount.Text = count.ToString(); 
     int c = m.bussinesCollection.BussinesDomain.GetAllDetailsForgvanalyseCount(SchoolID, YearID, LessonID, VersionID, TeacherID, LearningunitID, DomainID); 
     lblstd.Text = c.ToString(); 
     gvAnalyse.DataSource = dt; 
     gvAnalyse.DataBind(); 
    } 

我創建這種類型的方法6將根據下拉菜單選擇創建表,然後調用根據方法和填充相應地gvanalyse其顯示在屏幕上。

現在我已經把一個按鈕,從表中創建Excel表。

在導出Excel按鈕單擊事件我必須創建Excel表格與當前顯示在屏幕中的表格。

對於在按鈕單擊事件我已經做到了這一點

protected void btnexel_Click(object sender, EventArgs e) 
    { 
     byte[] Result; 
     using (MemoryStream ms = new MemoryStream()) 
     { 
      string school = School.SelectedItem.Text; 
      string year = Years.SelectedItem.Text; 
      DataTable final = dt; 
      // DataTable dt = m.bussinesCollection.BussinesDomain.GetAllDetailsForgvanalyse(SchoolID, YearID, LessonID, VersionID, TeacherID, LearningunitID, DomainID); 
      string style = @"<style> .textmode { mso-number-format:\@; } </style>"; 
      Response.Write(style); 
      Result = ms.GetBuffer(); 
      Session["Excel"] = Result; 
      Session["dt"] = final; 
      Session["school"] = school; 
      Session["year"] = year; 
      Session["pdf/excel"] = "excel/loondiest/analyse"; 
      Response.Redirect("~/admin/DownloadPdf.aspx"); 
     } 
} 

但是,當我調試它,它總是顯示該表最後& DT都爲null。

我該怎麼辦?

+1

能否請您加入您的實際代碼,所以我們可能會看到你」重新嘗試做? –

+0

我們不知道爲什麼它沒有看到你寫的是什麼;你應該發佈一些代碼。 –

+0

好吧,我將解釋一些屏幕截圖。 –

回答

0

您必須堅持您的DataTablepersistance structure,因爲當您發佈您的數據時,您的數據將丟失。

持久性結構

ViewState : on page with post 

Session 

Cache 

Application 

樣品

public DataTable Table 
{ 
    get 
    { 
     if(ViewState["KeyTable"] != null) 
     { 
     return ViewState["KeyTable"] as DataTable; 
     } 
    } 
    set 
    { 
    ViewState["KeyTable"] = value; 
    } 
} 

使用案例:

Table = your value; 

..... 

表=

+0

我已經正確編輯了我的問題。請給我們建議。 –

+0

Yeh..Your trick is working..thanks much .. –

+0

我很高興爲您效勞Hiral Bavisi –