我有供应商表,每个供应商都有id int值。我正在尝试在ListView中编辑此表的列。
我正在尝试访问e arg,但它没有关于我正在尝试更新的行的ID的任何数据?
答案 0 :(得分:1)
使用sender
代替e
protected void ListView1_ItemUpdated(object sender, ListViewUpdatedEventArgs e)
{
if ((sender as ListView) != null)
{
ListView l = (ListView)sender;
l.SelectedIndex;
l.etc..............
DataKey key = l.SelectedDataKey;
object k = key.Values["foo"];
}
}
答案 1 :(得分:1)
您需要将ListView.DataKeyNames设置为包含uniqueId的属性名称
<asp:ListView runat="server" ID="LvSample" DataKeyNames="SupplierId"/>
然后dataKey将在更新事件中可用。在Update发生之前,您可能想要使用ItemUpdating事件而不是ItemUpdated,这是值得的。
protected void Page_Load(object sender, EventArgs e)
{
LvSample.ItemUpdating += new EventHandler<ListViewUpdateEventArgs>(LvSample_ItemUpdating);
LvSample.ItemUpdated += new EventHandler<ListViewUpdatedEventArgs>(LvSample_ItemUpdated);
}
void LvSample_ItemUpdated(object sender, ListViewUpdatedEventArgs e)
{
var supplierId = e.NewValues["SupplierId"];
}
void LvSample_ItemUpdating(object sender, ListViewUpdateEventArgs e)
{
var supplierId = e.Keys["SupplierId"];
}