2013-10-03 6 views
0

다음 이벤트에서 girdiview를 바인딩합니다. (subjectdropdown_SelectedIndexChanged) 다음 메서드에서 gridview를 다른 메서드의 매개 변수로 보내십시오 : Button1_click 이벤트. 있는 gridview의 TextBoxTemplate 열에서 gridey 데이터를 anothe 메서드에 전달할 때 null입니다.

protected void subjectdropdown_SelectedIndexChanged(object sender, EventArgs e) 
{ 
     DataTable getmarkfdb = inter.getmarksfromdatabaseothers(comp); 
     if (getmarkfdb.Rows.Count > 0) 
     { 
       TemplateField lable1 = new TemplateField(); 
       lable1.ShowHeader = true; 
       lable1.HeaderText = "AdmissionNumber"; 
       lable1.ItemTemplate = new gridviewtemplate(DataControlRowType.DataRow, "AdmissionNumber", "AdmissionNumber", "Label"); 
       studmarkgrid.Columns.Add(lable1); 

       TemplateField label2 = new TemplateField(); 
       label2.ShowHeader = true; 
       label2.HeaderText = "RollNumber"; 
       label2.ItemTemplate = new gridviewtemplate(DataControlRowType.DataRow, "RollNumber", "RollNumber", "Label"); 
       studmarkgrid.Columns.Add(label2); 

       TemplateField label3 = new TemplateField(); 
       label3.ShowHeader = true; 
       label3.HeaderText = "Name"; 
       label3.ItemTemplate = new gridviewtemplate(DataControlRowType.DataRow, "Name", "Name", "Label"); 
       studmarkgrid.Columns.Add(label3); 

       TemplateField extmep = new TemplateField(); 
       extmep.ShowHeader = true; 
       extmep.HeaderText = "ExternalMark"; 
       extmep.ItemTemplate = new gridviewtemplate(DataControlRowType.DataRow, "ExternalMark", "ExternalMark", "TextBox"); 

       studmarkgrid.Columns.Add(extmep); 

       studmarkgrid.DataSource = getmarkfdb; 
       studmarkgrid.DataBind(); 


     } 
} 

나는 학생 마크를 작성하고 다음과 같은 이벤트에 내가있는 gridview에서 읽기 데이터에 대한 방법을 insertstumark 및 데이터베이스에 저장있는 gridview를 보냅니다. 그러나 insertstumark 메소드의 gridview 행 데이터는 null입니다.

protected void Button1_Click(object sender, EventArgs e) 
{ 
      comp.ACADAMICYEAR = acyeardropdown.SelectedItem.Text; 
      comp.MEDIUM = mediumdropdown.SelectedItem.Text; 
      string clas = classdropdown.SelectedItem.Text; 
      string[] cs = clas.Split('-'); 
      comp.CLASSNAME = cs[0].ToString(); 
      comp.SECTIONNAME =Convert.ToChar(cs[1].Trim().ToString()); 
      comp.EXAMNAMES = examnamedropdown.SelectedItem.Text; 
      comp.SUBJECTID = subjectdropdown.SelectedValue.ToString(); 
      // studmarkgrid.DataBind(); 
      // System.Web.UI.WebControls.GridView grid = studmarkgrid; 
      // System.Web.UI.WebControls.GridView grid = ViewState["stdmarkgrid"] as System.Web.UI.WebControls.GridView; 
      DataTable studtable = null; 
      // System.Web.UI.WebControls.GridView grid = (System.Web.UI.WebControls.GridView)ViewState["stdmarkgrid"]; 
      bool studm = inter.inserstumark(comp,stumarkgrid); 
    } 

무엇이 문제입니까? viewstate에 gridview를 저장하려고했습니다. 다음 줄에 오류가 있습니다. 이 문제를 해결하는 방법? 당신은에 액세스 할 수 없습니다 다음 다시 게시에, 그래서 데이터가 페이지 수명주기에 너무 늦게의 GridView에 바인딩 된 경우

System.Web.UI.WebControls.GridView grid = ViewState["stdmarkgrid"] as System.Web.UI.WebControls.GridView; 

답변

0

많은 시간이의의 GridView 렌더링되고 데이터는 잊어 GridView의 기본 데이터 소스

여기에 무슨 일이 일어나고있는 것처럼 보입니다. ViewState에 getmarksfromdatabaseothers의 결과를 저장하면 필요에 따라 다시 액세스 할 수 있습니다.

+0

죄송합니다. 이 값은 getmarkfromdatabaseothers가 studmarkgrid에 바인드 한 후에 수정됩니다. 즉, gridview ExternalMark 값을 편집 한 다음 Button1_click 이벤트를 호출합니다. 따라서 viewstate에서 getmarkfromothers 값을 저장하면 편집 된 데이터가 아닌 이전 데이터가 제공됩니다. 내 문제. – baskaran

관련 문제