per*_*rks 1 c# asp.net repeater findcontrol
我有一个中继器,嵌套有 Html 表行:
<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound">
<HeaderTemplate>
<table id="grid">
<thead>
<tr>
<th>SID</th>
<th>Start Date</th>
<th>End Date</th>..
<th>PDF Text</th>
</tr>
</thead>
<tbody>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%#DataBinder.Eval(Container.DataItem,"ID") %></td>
<td><%#DataBinder.Eval(Container.DataItem,"startDate") %></td>
<td><%#DataBinder.Eval(Container.DataItem,"endDate") %></td
<td>
<asp:LinkButton runat="server" ID="lbtnPDF" Text="PDF Full Text" OnClick="lbtnPDF_Click" />
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</tbody>
</table>
</FooterTemplate>
</asp:Repeater>
Run Code Online (Sandbox Code Playgroud)
当用户单击链接按钮时,我想获取该行中继器项目的 ID,并将在另一个 aspx 页面中显示与该 ID 相关的 PDF 文件。
我在 itemdatabound 事件上写道:
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
LinkButton lnkBtn = (LinkButton)e.Item.FindControl("lbtnPDF");
}
Run Code Online (Sandbox Code Playgroud)
如何获取嵌套在 html 表中的中继器的列 ID?
小智 5
我认为您没有遵循正确的方法来做到这一点。我会选择Repeater的ItemCommand Event的好处来做到这一点。
以下代码可能对您有帮助:
HTML/ASP.net
<asp:Repeater ID="Repeater1" DataSourceID="SqlDataSource1" runat="server" OnItemCommand="Repeater1_ItemCommand">
<ItemTemplate>
<asp:Button ID="Button1" runat="server" Text='<%#DataBinder.Eval(Container.DataItem,"Username") %>' CommandName="ViewPDF" CommandArgument='<%#DataBinder.Eval(Container.DataItem,"ID") %>' />
</ItemTemplate>
</asp:Repeater>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString='<%$ ConnectionStrings:myConnString %>' SelectCommand="SELECT * FROM [tblUserAccounts]"></asp:SqlDataSource>
Run Code Online (Sandbox Code Playgroud)
正如您所注意到的,我在标签中使用了 CommandName 和 CommandArgument 属性。我使用 CommandName 属性来标识用户期望执行哪个操作。还有将所需数据对象传递到服务器的 CommandArgument。
转到 Repeater 的 OnItemCommand 而不是 ItemDataBound 事件。并编写如下代码;
protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if (e.CommandName == "ViewPDF")
{
Response.Redirect("~/MyPDFFiles/" + (string)e.CommandArgument);
}
}
Run Code Online (Sandbox Code Playgroud)
现在运行并测试您的应用程序!
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
10390 次 |
| 最近记录: |