2011-04-16 76 views
0

我有一个DetailsView控件没有附加到数据源,但是被存储过程填充。另外,我没有在标记中定义任何字段。我遇到的问题是在ItemUpdating事件期间抓取单元格文本。例如,我想从五行中的每一行的单元格1中获取文本并将它们存储到变量中,但每次变量的文本都会返回空值。任何帮助,将不胜感激。下面是我的标记,然后是代码隐藏:从DetailsView获取单元格文本

<asp:DetailsView ID="goalsDetailsView" runat="server" AllowPaging="True" 
          CssClass="mGrid" DataKeyNames="GoalID,TaskSetID" Height="50px" 
          onitemcreated="goalsDetailsView_ItemCreated" 
          onmodechanging="goalsDetailsView_ModeChanging" 
          OnPageIndexChanging="goalsDetailsView_PageIndexChanging" Width="100%" 
          onitemdeleting="goalsDetailsView_ItemDeleting" 
          onitemupdating="goalsDetailsView_ItemUpdating"> 
          <Fields> 
           <asp:CommandField ShowEditButton="True" ShowDeleteButton="True" />            
          </Fields> 

         </asp:DetailsView> 



protected void goalsDetailsView_ItemUpdating(object sender, DetailsViewUpdateEventArgs e) 
    { 
     //Accessing Edited values from the Details View    

     //grab the goalid and create a string guid 
     string strgoalid = goalsDetailsView.Rows[0].Cells[1].Text; //GoalID 
     Guid goalid = new Guid(strgoalid); 

     //grab the tasksetid and create a string guid 
     string strtasksetid = goalsDetailsView.Rows[1].Cells[1].Text; //TaskSetID 
     Guid tasksetid = new Guid(strtasksetid); 

     //grab goal text 
     //string goal = ((TextBox)GoalsGridView.Rows[3].Cells[1].Controls[0]).Text; //Company 
     string goal = goalsDetailsView.Rows[2].Cells[1].Text; 

     //grab task text    
     string Task1 = goalsDetailsView.Rows[3].Cells[1].Text; //Task 1 
     string Task2 = goalsDetailsView.Rows[4].Cells[1].Text; //Task 2 
     string Task3 = goalsDetailsView.Rows[5].Cells[1].Text; //Task 3 
     string Task4 = goalsDetailsView.Rows[6].Cells[1].Text; //Task 4 
     string Task5 = goalsDetailsView.Rows[7].Cells[1].Text; //Task 5 



     UpdateOrAddNewRecord(goalid, tasksetid, Task1, Task2, Task3, Task4, Task5, goal, true); // call update method    
     BindDetailsView(); // Rebind GridView to reflect changes made 
    } 

回答

1

我在另一个项目中遇到了这个问题;你想从DetailsViewUpdateEventArgs说法得到它 - 这包含被提交的形式

string task1 = e.NewValue[3]; // etc 

你可能想投的值作为一个字符串System.Convert.ToString(e.NewValue[3]);尽量不要使用CStr的()中的所有新的价值观!

希望这会有所帮助。

+0

谢谢...我会给这个镜头。 – 2011-04-16 15:16:51

+0

工作!谢谢。 – 2011-04-16 15:22:23

相关问题