2012-03-30 13 views
1

我有關於OnItemDataBound事件的問題,我希望有人能幫助我。將新參數傳遞給在OnItemDataBound事件中調用的函數

現在我有

和函數的定義是:

保護無效FillRepeater(對象發件人,RepeaterItemEventArgs E)

我想要做的是通過一個參數如下:

但我不確定這是可能的嗎? 我已經編輯我的函數定義

保護無效FillRepeater(對象發件人,RepeaterItemEventArgs E,INT NUM)

,但我不知道如何編輯標記通過第2個預期參數?

回答

1

您無法修改ASP.NET服務器控件事件處理程序的簽名,但我懷疑您正嘗試傳遞當前項目的索引或從當前項目中獲取屬性。這裏有幾行可能會幫助你,如果這是你的目標:

protected void FillRepeater(object sender, RepeaterItemEventArgs e) 
{ 
    // this will get the object that the current repeater item is bound to 
    YourItemType item = e.Item.DataItem as YourItemType; 

    // this will get the index of the current repeater item 
    var collection = repeater.DataSource as List<YourItemType>; 
    int itemIndex = collection.IndexOf(e.Item.DataItem as YourItemType); 
} 
+0

感謝您的回覆。實際上,我想根據我控制的頁面傳遞一些參數。 轉發器綁定到一個XML文件,並且可能只有一些數據源中的項目我想要在1頁上顯示,並且我可以將其直接匹配到XML文件中的元素。 – 2012-03-30 03:13:50

+2

我明白了,你可以將頁面參數放在HiddenField中,然後從那裏讀取值?如果不是的話,我們可能需要多一點的描述來說明你的總體目標是什麼。 – KodeKreachor 2012-03-30 03:16:42

+0

我有4個aspx頁面,每個頁面都有一箇中繼器,並將數據綁定到一個XML文件。但是,我實際上並不想在任何一個頁面上顯示該XML文件的完整數據,只是它的一部分。因此,在每個頁面後面的代碼中,處理OnItemDataBound事件的函數幾乎完全相同,除了這兩行: string sectionText = DataBinder.Eval(e.Item.DataItem,「section」)。ToString( );我認爲如果我將它創建爲一個類,並改爲傳遞一個字符串參數,會更好。如果(sectionText.Equals(「EnvironmentalScan」)){...} – 2012-03-30 03:29:10