2012-03-21 175 views
0

在我的asp頁面中,用戶可以從TextBox和搜索按鈕搜索學生。每次他們進行搜索時,學生對象都會返回。我只希望能夠使用學生對象填充gridview,但每次頁面加載時,頁面都不記得以前的搜索。我的意思是,我的gridview變空了。我如何填寫gridview?填充數據表

List<Student> oList; 
protected void Page_Load(object sender, EventArgs e) 
{ 
    if (IsPostBack) 
    { 
     oList = new List<Student>(); 
    } 
} 

protected void AddLinkButton_Click(object sender, EventArgs e) 
{ 
    Student oStudent = new Search().WithId(StudentIdTextBox.Text); 
    // Student object is recevied 
    oList.Add(oStudent); 
    StudentGridView.DataSource = oList; 
    StudentGridView.DataBind(); 

} 

class Student { // Just a simple student class 
    int id; 
    string name; 
    string sname; 
} 

每次調用搜索方法時,我都希望能夠將學生數據放到DataTable中,以便將其綁定到GridView。我只是不知道如何實現這一點。

+0

請問您可以發表一些代碼嗎? – w0051977 2012-03-21 09:25:25

+0

@ w0051977,當然! – 2012-03-21 09:30:48

+0

也請從aspx頁面發佈gridview代碼和數據表。 – w0051977 2012-03-21 09:39:30

回答

1

你想達到這樣的目的嗎?如果需要,我會改進我的答案。

它將列表存儲在會話對象中並綁定來自會話對象的網格。

public partial class _Default : System.Web.UI.Page 
{ 
    List<Student> oList = new List<Student>(); 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!Page.IsPostBack) 
     { 
      Session["List"] = oList; 
     } 

    } 
    protected void Button2_Click(object sender, EventArgs e) 
    { 
     var list = Session["List"] as List<Student>; 
     list.Add(new Student() { id = 1, name = "new", sname = "added" }); 
     Session["List"] = list; 
     GridView1.DataSource = list; 
     GridView1.DataBind(); 
    } 
} 
public class Student 
{ // Just a simple student class 
    public int id{get;set;} 
    public string name{get;set;} 
    public string sname{get;set;} 
} 
+0

謝謝你的回答,但正如我之前所說的,學生對象在這個'Student oStudent = new Search()後返回。WithId(StudentIdTextBox.Text); '。我不手動加載學生信息。當點擊添加按鈕時,我調用一個學生對象,將它添加到oList。 – 2012-03-21 10:33:13

+0

好的,您可能需要將您的List存儲在Session對象中並使用它。讓我編輯我的代碼 – AnarchistGeek 2012-03-21 10:38:04

+0

編輯代碼 – AnarchistGeek 2012-03-21 10:52:00