我怎么知道OnItemUpdated上ListView项的id?

时间:2010-09-19 09:08:54

标签: asp.net

我有供应商表,每个供应商都有id int值。我正在尝试在ListView中编辑此表的列。

我正在尝试访问e arg,但它没有关于我正在尝试更新的行的ID的任何数据?

2 个答案:

答案 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"];
    }