我在一个DataGrid中使用了一个模版,该模版包含一个TextBox,我希望在填写了数据后,翻页可以使用Session或者ViewState保存当前的数据,然后我在PageIndexChanged里想通过FindControl来获取当前填写的值,但都是获取的是原有的值,不能获取修改后的值<asp:TemplateColumn SortExpression="Score" HeaderText="成绩">
<HeaderStyle Wrap="False" HorizontalAlign="Center" Width="60px"></HeaderStyle>
<ItemStyle Wrap="False" HorizontalAlign="Right"></ItemStyle>
<ItemTemplate>
<asp:TextBox id="tbScore"  runat="server" Width="100%" Text="5666">
</asp:TextBox>
</ItemTemplate>
<FooterStyle Wrap="False"></FooterStyle>
</asp:TemplateColumn> private void grid_PageIndexChanged(object source, DataGridPageChangedEventArgs e)
{
DataTable dt=(DataTable)Session[dtScores];

for( int i = 0; i < grid.Items.Count; i ++ )
{
//查找TextBox控件
TextBox txt= (TextBox)grid.Items[i].FindControl("tbScore"); dt.Rows[i]["Score"]=txt.Text;
} Session[dtScores]=dt;
}

解决方案 »

  1.   

    例如上面,我在TextBox中的原始的值是5666,我更改为其它值后,在PageIndexChanged事件中都是只能获取到5666
      

  2.   

    DataTable dt=(DataTable)Session[dtScores];??
    这个地方Session[dtScores]你什么时间进行添加session?
    你修改textbox后保存值了吗?
    建议你在进行给Session[dtScores]赋值的时候跟踪以下就可以了!
    好久没有回到别人的问题了!希望你能理解Q!
      

  3.   

    就是你修改textbox后要从新邦定数据源然后再给session赋值!OK?
      

  4.   

    我跟踪出来了,原来 PageIndexChanged  是发生在 UpdateView事件之后的,我在UpdateView中写了从数据源获取的代码,所以他每次都是重新获取原来的数据,但是该事件是翻页必须要使用的,否则就没法翻页,有什么好的解决方法?