在列表视图中单击按钮后访问列表视图中的对象

本文关键字:视图 列表 对象 访问 单击 按钮 | 更新日期: 2023-09-27 18:08:45

我正在尝试设置一个用户控件。

我已经设置了一个包含表头的用户控件。对于每一行,发出第二个usercontrol,显示表的一行。line-usercontrol嵌入在listview中。

listview的一个单元格包含一个文本框,另一个单元格包含一个Button。每行的按钮都使用相同的buttonclick事件,并使用命令来查找按下的按钮。

是否有某种方法可以在该特定行的文本框中输入值?

代码头控件:

<asp:Panel runat="server" ID="pnlUcHeader">
<table>
    <thead>
        <tr>
            <th>...</th>
            ...
            <th>Textbox Column</th>
            <th>Button Column</th>
        </tr>
    </thead>
    <asp:ListView runat="server" ID="lvUcItemsItem" OnItemDataBound="lvUcItems_ItemDataBound">
        <ItemTemplate>
            <uc1:Items runat="server" ID="ucItems" CssClass="normal" />
        </ItemTemplate>
    </asp:ListView>
</table>

code项目用户控制

<tr runat="server" id="serverRow">
<td>
    <asp:Literal runat="server" ID="..."></asp:Literal></td>
<td>
    <asp:TextBox runat="server" ID="tbItem"></asp:TextBox>
</td>
<td>
    <asp:Button runat="server" ID="btnItem" Text="..." OnCommand="btnItem_Click"/>
</td>

项目背后的代码用户控件

protected void btnItem_Click(object sender, CommandEventArgs e)
{
    var lineID = e.CommandArgument;
    //TextBox tb = FindControl("tbAfhaalDatum)
    ???????
}

这是可能的代码背后或有一个选项使用Javascript/Jquery回发值?

亲切的问候

在列表视图中单击按钮后访问列表视图中的对象

您必须访问控件的NamingContainer来搜索您的文本框:

protected void btnItem_Click(object sender, CommandEventArgs e)
{
    var control = (Control)sender;
    var container = control.NamingContainer;
    var textBox = container.FindControl("tbItem") as TextBox;
    if (textBox != null)
    {
        var lineID = e.CommandArgument;
        var text = textBox.Text;
    }
}