2009-12-06 59 views
0

这将是一个简单的表格,其中有一些初始单元格,另一个用户应该输入。 我使用DataList控件的ItemTemplate有:从DataList检索数据

<ItemTemplate> 
    <asp:TextBox ID="CellTextBox" runat="server" Text='<%# Bind("Cell") %>' /> 
</ItemTemplate> 

在代码中,我重写的DataBind()这个控制:

public override void DataBind() 
     { 
      MyDataList.DataSource = dataTable; 
      MyDataList.DataBind(); 
     } 

现在这是行不通的。用户输入一些单元格并点击提交按钮,但dataTable(在这个按钮的OnClick事件处理方法中)不包含用户的数据 - 只是初始化。我该怎么办?

+0

嗨,也许我错了,但不应该使用Eval(“单元格”),而不是绑定(“单元格”),如果你想显示该绑定的值? – Marko 2009-12-07 23:11:58

回答

0

我不确定我完全理解,但我认为你可能会遇到问题,因为你需要检查页面加载时的回复。你可能想尝试这样的事情:

public void Page_Load(Object sender, EventArgs e) 
{ 
    if (!this.IsPostBack) 
    { 
    myDataList.DataSource = myManager.GetDataTable(); 
    myDataList.DataBind(); 
    } 
} 

这样,数据只会被绑定到初始页面加载的控件上,而不是后续的回发请求。每次请求都会调用Page_ Load,这意味着您的Page_Load中的代码将在按钮点击方法之前执行。因此,您需要检查页面上的IsPostBack属性以查看当前请求是否回发。如果是这样,那么不要将数据绑定到您的控件上,因为您将失去用户输入的内容。

+0

对不起,我的信息太少了。有详细信息 – Sevina 2009-12-06 22:36:52

+0

我怀疑ItemTemplate(不是EditItemTemplate)中的控件是否可以使用#Bind并可以检索用户输入的数据 – Sevina 2009-12-06 22:55:18

+0

看起来像是因为使用Session/In调试模式,Table从Session状态中获取。但是我应该怎么办? – Sevina 2009-12-06 23:12:44