C# 回发后如何访问数据列表中的数据绑定选定项?

C# 回发后如何访问数据列表中的数据绑定选定项?,c#,.net,asp.net,datalist,C#,.net,Asp.net,Datalist,回发后如何访问数据绑定项 我有一个数据列表,当用户选择一个项目时,OnItemCommand事件将激发,我的事件处理程序看起来如下: protected void dlResults_Select(object sender, DataListCommandEventArgs e) { MyItem item = e.Item.DataItem as MyItem; } 项始终为空。有没有办法访问数据绑定项?一些建议 一些建议 我发现解决此类问题的最简单方法是向控件添加一个javascri

回发后如何访问数据绑定项

我有一个数据列表,当用户选择一个项目时,OnItemCommand事件将激发,我的事件处理程序看起来如下:

protected void dlResults_Select(object sender, DataListCommandEventArgs e)
{
  MyItem item = e.Item.DataItem as MyItem;
}

项始终为空。有没有办法访问数据绑定项?

一些建议

一些建议

我发现解决此类问题的最简单方法是向控件添加一个javascript事件,该事件使用控件的选定值更新输入控件(type=hidden)。如果将runat=server属性添加到标记中,则可以访问输入控制服务器端并从中读取值。回发应该在javascript事件之后触发,因此其他所有操作都应该“正常”工作

我发现解决此类问题的最简单方法是向控件添加一个javascript事件,该事件使用控件的选定值更新输入控件(type=hidden)。如果将runat=server属性添加到标记中,则可以访问输入控制服务器端并从中读取值。回发应该在javascript事件之后触发,因此其他所有操作都应该“正常”工作

只有通过ItemDataBound事件访问时,DataItem属性才不为null。如果需要ID来修改对象/记录,可以设置DataList的属性以填充DataKeys集合

<asp:DataList ID="DataList1" runat="server" DataKeyField="id">
</asp:DataList>

DataItem属性仅在通过ItemDataBound事件访问时不为null。如果需要ID来修改对象/记录,可以设置DataList的属性以填充DataKeys集合

<asp:DataList ID="DataList1" runat="server" DataKeyField="id">
</asp:DataList>

只有在了解您进行数据绑定的方式后,才能对您的问题提供适当的答案。您是通过调用datalist的.DataBind()方法从代码中进行数据绑定,还是向datalist提供一个数据源进行绑定。我问这个问题的原因是,如果您在绑定数据列表的代码中使用数据列表的.DataBind()方法,您必须在每次回发时调用它,以确保数据列表再次绑定。否则,在回发后,您将看到datalist显示为空。如果您使用datasource或DataSourceId属性向datalist提供一个数据源进行绑定,那么每次回发时datalist的数据绑定都由框架负责,您不必担心这一点

但是从外观上看,我相信您获取的值为null,因为您试图在错误的位置获取数据项的值。请记住,您必须遵循控件的正确生命周期,使其按您希望的方式为您工作


如果你能回答我上面的问题,我可以提供更好的答案。您当前的陈述似乎不足以提供相关的答案。

只有在了解您进行数据绑定的方式后,才能对您的问题提供适当的答案。您是通过调用datalist的.DataBind()方法从代码中进行数据绑定,还是向datalist提供一个数据源进行绑定。我问这个问题的原因是,如果您在绑定数据列表的代码中使用数据列表的.DataBind()方法,您必须在每次回发时调用它,以确保数据列表再次绑定。否则,在回发后,您将看到datalist显示为空。如果您使用datasource或DataSourceId属性向datalist提供一个数据源进行绑定,那么每次回发时datalist的数据绑定都由框架负责,您不必担心这一点

但是从外观上看,我相信您获取的值为null,因为您试图在错误的位置获取数据项的值。请记住,您必须遵循控件的正确生命周期,使其按您希望的方式为您工作


如果你能回答我上面的问题,我可以提供更好的答案。您当前的声明似乎不足以提供相关的答案。

您必须重新绑定控件。ViewState不会持久化数据绑定项。必须重新绑定控件。ViewState不会持久化数据绑定项。