2012-03-30 17 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