.net 中是否有等同于 Javascript 函数 .closest() 的函数?
Is there an equivalent to the Javascript function .closest() in .net?
我正在使用的站点上的 table 是由转发器创建的,因此我不知道如何在页面生成后识别它们。我需要能够 select 基于从该行中的单元格单击按钮的行。
有一个 Javascript 函数可以执行此操作,但我想在 .net (C#) 中复制;
currentRow = $(evt).closest("tr");
table是这样生成的; (包含 "hide" 按钮的最后一列)
<asp:Repeater ID="StoredProcedureRepeater" runat="server">
<ItemTemplate>
<tr ID="HideMe" class="NotHidden" runat="Server">
<td style="width: 300px" runat="server">
<asp:HyperLink runat="server" Text='<%# StoredProcedure.Caption %>' NavigateUrl='<%# Url.StoredProcedure(StoredProcedure) %>' />
</td>
<td runat="server">
<%# StoredProcedure.Description %>
</td>
<td runat="server">
<asp:HyperLink ID="EditProcedure" runat="server" Text='edit' NavigateUrl='<%# Url.EditProcedure(StoredProcedure) %>' />
</td>
<td id="HideBtn">
<asp:button ID="HideUnhide" runat="server" image="../images/collapse.png" onclick="Hide_Unhide"/>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
中继器的代码后面; (为了清楚起见,这个转发器是在另一个转发器中创建的。)
private void SchemaRepeater_ItemCreated(object sender, RepeaterItemEventArgs e)
{
Schema = (Schema)e.Item.DataItem;
var storedProcedureRepeater = (Repeater)e.Item.FindControl("StoredProcedureRepeater");
storedProcedureRepeater.ItemCreated += StoredProcedureRepeater_ItemCreated;
storedProcedureRepeater.DataSource = _schemaStoredProcedures[Schema];
storedProcedureRepeater.DataBind();
}
private void PriorityProcedureRepeater_ItemCreated(object sender, RepeaterItemEventArgs e)
{
StoredProcedure = (StoredProcedure)e.Item.DataItem;
}
既然你说你想在 C# 中复制这个,我假设你的意思是你想在服务器端做这个。
首先,您需要在标记中为 RepeaterItemCommand 指定事件处理程序。
<asp:Repeater runat="server" OnItemCommand="MyRepeater_ItemCommand" ... />
然后在代码隐藏中定义事件处理程序。
protected void MyRepeater_ItemCommand(object sender, RepeaterCommandEventArgs e)
{
}
RepeaterCommandEventArgs 包含有关导致事件的行的信息,包括用于构建该行的数据项。如果你用一个列表构建你的转发器,那么你的事件处理程序看起来像这样:
protected void MyRepeater_ItemCommand(object sender, RepeaterCommandEventArgs e)
{
var dataItem = (Widget)e.Item.DataItem; // <-- this is the dataitem for the row
int dateItemID = dataItem.ID; // You can access the properties on your data item to "do stuff"
}
我正在使用的站点上的 table 是由转发器创建的,因此我不知道如何在页面生成后识别它们。我需要能够 select 基于从该行中的单元格单击按钮的行。
有一个 Javascript 函数可以执行此操作,但我想在 .net (C#) 中复制;
currentRow = $(evt).closest("tr");
table是这样生成的; (包含 "hide" 按钮的最后一列)
<asp:Repeater ID="StoredProcedureRepeater" runat="server">
<ItemTemplate>
<tr ID="HideMe" class="NotHidden" runat="Server">
<td style="width: 300px" runat="server">
<asp:HyperLink runat="server" Text='<%# StoredProcedure.Caption %>' NavigateUrl='<%# Url.StoredProcedure(StoredProcedure) %>' />
</td>
<td runat="server">
<%# StoredProcedure.Description %>
</td>
<td runat="server">
<asp:HyperLink ID="EditProcedure" runat="server" Text='edit' NavigateUrl='<%# Url.EditProcedure(StoredProcedure) %>' />
</td>
<td id="HideBtn">
<asp:button ID="HideUnhide" runat="server" image="../images/collapse.png" onclick="Hide_Unhide"/>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
中继器的代码后面; (为了清楚起见,这个转发器是在另一个转发器中创建的。)
private void SchemaRepeater_ItemCreated(object sender, RepeaterItemEventArgs e)
{
Schema = (Schema)e.Item.DataItem;
var storedProcedureRepeater = (Repeater)e.Item.FindControl("StoredProcedureRepeater");
storedProcedureRepeater.ItemCreated += StoredProcedureRepeater_ItemCreated;
storedProcedureRepeater.DataSource = _schemaStoredProcedures[Schema];
storedProcedureRepeater.DataBind();
}
private void PriorityProcedureRepeater_ItemCreated(object sender, RepeaterItemEventArgs e)
{
StoredProcedure = (StoredProcedure)e.Item.DataItem;
}
既然你说你想在 C# 中复制这个,我假设你的意思是你想在服务器端做这个。
首先,您需要在标记中为 RepeaterItemCommand 指定事件处理程序。
<asp:Repeater runat="server" OnItemCommand="MyRepeater_ItemCommand" ... />
然后在代码隐藏中定义事件处理程序。
protected void MyRepeater_ItemCommand(object sender, RepeaterCommandEventArgs e)
{
}
RepeaterCommandEventArgs 包含有关导致事件的行的信息,包括用于构建该行的数据项。如果你用一个列表构建你的转发器,那么你的事件处理程序看起来像这样:
protected void MyRepeater_ItemCommand(object sender, RepeaterCommandEventArgs e)
{
var dataItem = (Widget)e.Item.DataItem; // <-- this is the dataitem for the row
int dateItemID = dataItem.ID; // You can access the properties on your data item to "do stuff"
}