在列表视图中单击按钮后访问列表视图中的对象
本文关键字:视图 列表 对象 访问 单击 按钮 | 更新日期: 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;
}
}