Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
asp.net/vb.net System.Web.UI.WebControl.RepeaterItemEventArgs问题_Asp.net_Vb.net_Parameters_Itemdatabound - Fatal编程技术网

asp.net/vb.net System.Web.UI.WebControl.RepeaterItemEventArgs问题

asp.net/vb.net System.Web.UI.WebControl.RepeaterItemEventArgs问题,asp.net,vb.net,parameters,itemdatabound,Asp.net,Vb.net,Parameters,Itemdatabound,我对asp.net非常陌生,所以如果这是一个非常基本的问题,请原谅我。我有一个包含转发器的asp.net页面。代码如下: <div class="formRow"> <asp:Repeater ID="uxStudentFormActive" runat="server"> <ItemTemplate> <span style="font-weight:bold;" ><asp:Literal

我对asp.net非常陌生,所以如果这是一个非常基本的问题,请原谅我。我有一个包含转发器的asp.net页面。代码如下:

<div class="formRow">
    <asp:Repeater ID="uxStudentFormActive" runat="server">
        <ItemTemplate>
            <span style="font-weight:bold;" ><asp:Literal ID="uxFormName" runat="server" Text="#" /></span><br />
            <asp:TreeView ID="uxFormHistoryList" runat="server" Target="_blank" />              
        </ItemTemplate> 
    </asp:Repeater>
</div>
我不确定
aspx
页面如何与vb.net页面交互。我的问题是如何找出在我的vb.net页面中传递给子
UXStudentFormative\u ItemDataBound
e
值的来源?提前感谢。

来自MSDN关于在ASP.Net中处理事件的文章:

事件[在ASP.Net中]基于委托模型…委托是一种包含对方法的引用的类型。。。事件是由对象发送的一条消息,用以发出动作发生的信号。该操作可能是由用户交互(如单击按钮)引起的,也可能是由其他程序逻辑(如更改属性值)引起的。引发事件的对象称为事件发送器。。。可以通过事件数据类提供与事件关联的数据

在您的情况下,事件数据类是
RepeaterItemEventArgs

要响应事件,请在事件接收器中定义事件处理程序方法。此方法必须与正在处理的事件的委托签名匹配。在事件处理程序中,执行引发事件时所需的操作,例如在用户单击按钮后收集用户输入。要在事件发生时接收通知,事件处理程序方法必须订阅该事件

在项目中,在名为
AutoEventWireup
的.aspx页面顶部,您可能会说“这很好,但这意味着什么?”。它可能设置为
true
。这个属性做它看起来的事情:它会自动连接您的事件,这样您就不必这样做了。这就是您的.aspx页面知道如何与代码隐藏文件交互的方式

在.aspx页面上,您拥有中继器控件。在代码隐藏文件中,有事件处理程序方法。因为您已将
AutoEventWireup
设置为true,所以只要事件处理程序方法签名与该事件的委托签名匹配,这两件事就会自动链接在一起。在本例中,该事件是
ItemDataBound

对于您最初的问题,
e
的值来自哪里?来自发送者

Protected Sub uxStudentFormActive_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles uxStudentFormActive.ItemDataBound
在这个方法签名中,您有两个参数:
sender
,和
e
。如上所述,
发送方
是引发事件的对象。在您的例子中,这是
RepeaterItem
。由于中继器可能包含许多这样的对象,因此可以多次引发该事件。事件参数
e
,由
发送方
或数据绑定并引发事件的RepeaterItem生成

您可以在上阅读有关
RepeaterItemEventArgs
和中可用数据的更多信息



作为旁注,您可以将
AutoEventWireup
设置为false,并按照
AutoEventWireup
属性上MSDN文章链接中的详细说明手动连接事件。

感谢@Jack让我更深入地了解这一点。很抱歉,如果我的OP不太清楚,我确实知道这些值来自.aspx页面,我实际上要问的是,作为
e
传递到我的sub中的值是在哪里设置的,如何用数据填充
e
。答案来自我询问的中继器的中继器id,
uxStudentFormActive
。当我搜索这个中继器id时,我发现它的数据源是在
Page\u Load
sub中定义和绑定的。跟踪它会使我找到数据库中的一个存储过程,该存储过程正在传递会话数据,并且
e
正被设置为存储过程的结果

@mason VB.NET允许将
Handles-uxStudentFormActive.ItemDataBound
子句添加到处理程序中,就像在OP中所做的那样。对不起,这可能更容易回答。这些值来自数据源。无论哪种方式,如果我的回答对你有帮助,请考虑给它一个投票!谢谢。@Jack试图给你的答案投赞成票,但我的名声太低了,无法表现出来。再次感谢您的投入。
Protected Sub uxStudentFormActive_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles uxStudentFormActive.ItemDataBound