0

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

我已经设置了一个带有表格的用户控件,包括表格标题。对于每一行,发出第二个用户控件,显示表的 1 行。line-usercontrol 嵌入在列表视图中。

listview 的一个单元格包含一个文本框,另一个单元格包含一个按钮。每行的按钮都使用相同的 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>

代码 项目 用户控制

<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 回发值?

亲切的问候

4

1 回答 1

1

您必须访问您的控件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;
    }
}
于 2013-04-12T13:42:38.380 回答