C# 将新参数传递给在OnItemDataBound事件中调用的函数

C# 将新参数传递给在OnItemDataBound事件中调用的函数,c#,asp.net,repeater,C#,Asp.net,Repeater,我有一个关于OnItemDataBound事件的问题,我希望有人能帮我 现在我有 函数定义为: 受保护的void-FillRepeater(对象发送器,RepeaterItemEventArgs e) 我要做的是向函数传递一个参数,如下所示: 但我不确定这是否可行? 我已将我的函数定义编辑为 受保护的void-FillRepeater(对象发送器、RepeaterItemEventArgs e、int-num) 但我不确定如何编辑标记以传递前2个预期参数?您无法修改ASP.NET服务器控件事

我有一个关于OnItemDataBound事件的问题,我希望有人能帮我

现在我有

函数定义为:

受保护的void-FillRepeater(对象发送器,RepeaterItemEventArgs e)

我要做的是向函数传递一个参数,如下所示:

但我不确定这是否可行? 我已将我的函数定义编辑为

受保护的void-FillRepeater(对象发送器、RepeaterItemEventArgs e、int-num)


但我不确定如何编辑标记以传递前2个预期参数?

您无法修改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);
}
受保护的void FillRepeater(对象发送方,RepeaterItemEventArgs e)
{
//这将获取当前转发器项绑定到的对象
YourItemType item=e.item.DataItem作为YourItemType;
//这将获取当前中继器项的索引
var collection=repeater.DataSource作为列表;
int itemIndex=collection.IndexOf(e.Item.DataItem作为您的ItemType);
}

您无法修改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);
}
受保护的void FillRepeater(对象发送方,RepeaterItemEventArgs e)
{
//这将获取当前转发器项绑定到的对象
YourItemType item=e.item.DataItem作为YourItemType;
//这将获取当前中继器项的索引
var collection=repeater.DataSource作为列表;
int itemIndex=collection.IndexOf(e.Item.DataItem作为您的ItemType);
}

您可以使用
e.Item
查找中继器中的控件。如果需要的话,你可以打电话给家长,让他们在你的中继器上方找到物体。 我要做的是将我想要传递的数据放入隐藏字段中,并以此方式检索它们

Dim hListID As HiddenField = e.Item.FindControl("hListID")

您可以使用
e.Item
查找中继器中的控件。如果需要的话,你可以打电话给家长,让他们在你的中继器上方找到物体。 我要做的是将我想要传递的数据放入隐藏字段中,并以此方式检索它们

Dim hListID As HiddenField = e.Item.FindControl("hListID")

谢谢你的回复。实际上,我想根据我拥有控件的页面传递一些参数。中继器绑定到一个XML文件,可能只有数据源中的几个项目需要显示在一个页面上,我可以将其直接匹配到XML文件中的一个元素。我明白了,您可以将页面参数放在HiddenField中,然后从那里读取值吗?如果不是的话,我们可能需要对您的总体目标进行更多的描述。我有4个aspx页面,每个页面都有一个转发器,并且数据绑定到一个XML文件。但是,我实际上不想在任何一个页面上显示该XML文件的完整数据,只想显示其中的一部分。因此,在每个页面的代码背后,在处理OnItemDataBound事件的函数中,除了这两行之外几乎完全相同:string sectionText=DataBinder.Eval(e.Item.DataItem,“section”).ToString();if(sectionText.Equals(“EnvironmentalScan”){….}我认为如果我将其创建为一个类并传递一个字符串参数会更好。谢谢你的帮助,你的最后一条评论很有意义,我可以在我的中继器中添加一个隐藏标签,并在该隐藏标签的文本中传递我需要的任何参数。酷,是的,想一想,我认为这是你最直接的方式,祝你好运!谢谢你的回复。实际上,我想根据我拥有控件的页面传递一些参数。中继器绑定到一个XML文件,可能只有数据源中的几个项目需要显示在一个页面上,我可以将其直接匹配到XML文件中的一个元素。我明白了,您可以将页面参数放在HiddenField中,然后从那里读取值吗?如果不是的话,我们可能需要对您的总体目标进行更多的描述。我有4个aspx页面,每个页面都有一个转发器,并且数据绑定到一个XML文件。但是,我实际上不想在任何一个页面上显示该XML文件的完整数据,只想显示其中的一部分。因此,在每个页面的代码背后,在处理OnItemDataBound事件的函数中,除了这两行之外几乎完全相同:string sectionText=DataBinder.Eval(e.Item.DataItem,“section”).ToString();if(sectionText.Equals(“EnvironmentalScan”){….}我认为如果我将其创建为一个类并传递一个字符串参数会更好。谢谢你的帮助,你的最后一条评论很有意义,我可以在我的中继器中添加一个隐藏标签,并在该隐藏标签的文本中传递我需要的任何参数。酷,是的,想一想,我认为这是你最直接的方式,祝你好运!