2010-09-19 34 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"]; 
    } 
相關問題