2013-04-30 76 views
1

我在这里更新gridview的值,但该值没有更新.. TextBox txtID,TextBox txtName,TextBox txtAge只保留旧的价值和价值没有得到任何人updated..Can电话我喜欢我做错了什么在这里Gridview编辑/更新不起作用?

这里是我的代码

protected void gvTemp_RowUpdating(object sender, GridViewUpdateEventArgs e) 
     { 
      CreateDataSkeletton(Convert.ToInt16(Session["intTabIndex"])); 
      GridViewRow row = (GridViewRow)gvTemp.Rows[e.RowIndex]; 
      int autoid = Int32.Parse(gvTemp.DataKeys[e.RowIndex].Value.ToString()); 

      int id = Convert.ToInt32(gvTemp.DataKeys[e.RowIndex].Values[0].ToString()); 
      activeTabIndex = Convert.ToInt16(Session["activeTabIndex"]); 


      TextBox txtID = ((TextBox)gvTemp.Rows[e.RowIndex].FindControl("txtId")); 
      TextBox txtName = (TextBox)gvTemp.Rows[e.RowIndex].FindControl("txtName"); 
      TextBox txtAge = (TextBox)gvTemp.Rows[e.RowIndex].FindControl("txtAge"); 

      dataSetInSession.Tables["Days" + activeTabIndex.ToString()].Rows[e.RowIndex]["ID"] = txtID.Text; 
      dataSetInSession.Tables["Days" + activeTabIndex.ToString()].Rows[e.RowIndex]["Name"] = txtName.Text; 
      dataSetInSession.Tables["Days" + activeTabIndex.ToString()].Rows[e.RowIndex]["Age"] = txtAge.Text; 

      gvTemp.DataSource = dataSetInSession.Tables["Days" + activeTabIndex.ToString()]; 
      gvTemp.DataBind(); 
      gvTemp.EditIndex = -1; 
     } 

private void CreateDataSkeletton(int intTabIndex) 
     { 
      dataSetInSession = new DataSet(); 
      Session["intTabIndex"] = intTabIndex; 

      if (Session["dataSetInSession"] != null) 
      { 
       dataSetInSession = (DataSet)Session["dataSetInSession"]; 
      } 
      if (dataSetInSession.Tables["Days" + intTabIndex].Rows.Count > 0) 
      { 
       gvTemp.DataSource = dataSetInSession.Tables["Days" + intTabIndex]; 
       gvTemp.DataBind(); 
      } 
      else 
      { 
       gvTemp.DataSource = dataSetInSession.Tables["Days"]; 
       gvTemp.DataBind(); 
      } 
      temp.Controls.Add(gvTemp); 
     } 

任何建议??

EDIT(1):

protected void Page_Init(object sender, EventArgs e) 
     { 
      if (!IsPostBack) 
      { 
       AddDataTable(); 
      } 
      dataSetInSession = new DataSet(); 

      if (Session["dataSetInSession"] != null) 
      { 
       dataSetInSession = (DataSet)Session["dataSetInSession"]; 
      } 

      if (Session["dynamicTabIDs"] != null) 
      { 
       //if dynamicTabIDs are in session, recreating the Tabs 
       //that are associated with the Tab IDs 
       //and adding them to the TabContainer that will contain 
       //all of the dynamic tabs. 

       //retrieving the tab IDs from session: 
       dynamicTabIDs = (List<string>)Session["dynamicTabIDs"]; 
       if (TabContainerContent.ActiveTabIndex == -1) 
       { 
        TabContainerContent.ActiveTabIndex = Convert.ToInt16(Session["intTabIndex"]); 

       } 
       CreateDataSkeletton(Convert.ToInt16(Session["intTabIndex"])); 
       //looping through each TabID in session 
       //and recreating the TabPanel that is associated with that tabID 
       foreach (string tabID in dynamicTabIDs) 
       { 


        //creating a new TabPanel that is associated with the TabID 
        AjaxControlToolkit.TabPanel tab = new AjaxControlToolkit.TabPanel(); 
        //TabContainerContent.ActiveTabIndex = tab; 
        //Setting the ID property of the TabPanel 
        tab.ID = tabID; 
        //setting the TabPanel's HeaderText 
        tab.HeaderText = "Days " + (TabContainerContent.Tabs.Count + 1).ToString(); 

        //creating a Label to add to the TabPanel...at this point you'll have to 
        //create whatever controls are required for the tab... 
        Label tabContent = new Label(); 
        //Giving the Label an ID 
        tabContent.ID = "lbl_tab_" + TabContainerContent.Tabs.Count.ToString(); 
        //Setting the Label's text 
        tabContent.Text = "Tab " + (TabContainerContent.Tabs.Count + 1).ToString(); 

        //Adding the Label to the TabPanel 
        tab.Controls.Add(tabContent); 

        //Adding the TabPanel to the TabContainer that contains the dynamic tabs 
        TabContainerContent.Tabs.Add(tab); 
       } 
      } 
      else 
      { //Creating a new list of dynamicTabIDs because one doesn't exist yet in session. 
       dynamicTabIDs = new List<string>(); 
      } 
     } 

protected void Page_Load(object sender, EventArgs e) 
     { 

     } 
+0

也把你的Page_Load事件代码well..thanks – Rahul 2013-04-30 06:57:45

回答

0

Page Life Cycle ,你会得到,如果你想在绑定代码后,你应该这样做在初始化事件,其他明智的没有事件将触发。

+0

看看我的编辑.. – Rooney 2013-04-30 07:02:49

0

这似乎是Page.IsPostback problem.Need在你的Page_Load中添加Page.IsPostback财产一样

protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!Page.IsPostBack) 
      { 
      // Put your code inside that. 
      } 
     } 

其实你的控制得到新的价值,但是当您单击更新用那么从page_load调用旧值。因此,尝试将Page.IsPostback放入您的page_load事件中,就像我之前提到的一样。

我希望它有帮助。

+0

看看我的编辑.. – Rooney 2013-04-30 07:02:18

+0

你的Session [“dataSetInSession”]为具有旧值和UR分配相同的价值,你的gvTemp (网格视图)gvTemp_RowUpdating事件。这是我认为的问题。当您调用gvTemp_RowUpdating事件时,请检查dataSetInSession是否为null。 – Rahul 2013-04-30 07:06:50