2010-09-19 58 views

回答

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"];   
    } 
} 
+0

谢谢@Caspar Kleijne。我如何获得我编辑的当前项目的id sql值? – eugeneK 2010-09-19 09:23:29

+0

@Caspar Kleijne,我在Response.Write(((ListView)sender).SelectedDataKey.Value.ToString())上得到null对象异常。我确实加入了ListView DataKeyNames ='id' – eugeneK 2010-09-19 09:29:16

+0

是你的listview中的id吗? (除了它宣布为datakeyname?) – 2010-09-19 09:30:32

1

您需要设置ListView.DataKeyNames包含的UNIQUEID

<asp:ListView runat="server" ID="LvSample" DataKeyNames="SupplierId"/> 

属性名称,则dataKey将在更新可用事件。值得一提的是,您可能希望使用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"]; 
    } 
相关问题