无法使用FindControl进行更新

时间:2015-04-23 19:50:28

标签: c# asp.net

我的listview_car中的EditItemTemplate中有一个TextBox:

<EditItemTemplate>
  <asp:TextBox ID="txt1" runat="server" Text='<%# Bind("photo1") %>' Visibile="true">
  </asp:TextBox>
</EditItemTemplate>

现在在代码中,我在ItemUpdating事件中有这个:

 protected void listview_car_ItemUpdating(object sender, ListViewUpdateEventArgs e)
 {
   var txt1 = listview_car.Items[0].FindControl("txt1") as TextBox;
   txt1.Text = "newImage";
 }

现在我已经调试了它并且从我的数据库显示的值是正确的,然后当我使用txt1.Text = "newImage";从代码设置它时它显示它已更新了Auto中的文本框但是它不会在数据库中更新,但奇怪的是当我在文本框中输入并单击它更新的编辑按钮但在代码中设置字符串时没有更新?

有谁知道我做错了什么?

2 个答案:

答案 0 :(得分:0)

调用ItemUpdating()时,所有值都已在NewValues集合中收集。要修改任何值,您应该修改e.NewValues

protected void listview_car_ItemUpdating(object sender, ListViewUpdateEventArgs e)
{
    e.NewValues["key"] = "newImage";
}

其中“key”是键的名称(不是控件的名称),通常是列名。您还可以使用索引0,1,2 ...

答案 1 :(得分:-1)

在listview_car_ItemUpdating中,首先更新数据库,然后在首次加载页面时调用用于将控件绑定到数据库的任何方法。这将从数据库中检索photo1的新值并将其绑定到txt1。