使用下面的ItemDataBound
来计算我的页面字段的值,但我得到的是和Unexpected Error
:
C#:
protected void rptLicenseHistory_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
((TextBox)e.Item.FindControl("txLicenseHistoryType")).Text = "Test";
}
ASP.NET:
<asp:Repeater ID="rptLicHistory" runat="server" onitemdatabound="rptLicenseHistory_ItemDataBound">
<ItemTemplate>
<div style="display:flex;width: 100%;align-items: center;">
<div style="width:60px;">License:</div>
<div style="width:170px;"><asp:TextBox ID="txLicenseHistoryType" runat="server"/></div>
</div>
</ItemTemplate>
<SeparatorTemplate>
<div style="height: 30px;"> </div>
</SeparatorTemplate>
</asp:Repeater>
Textbox ID "txLicenseHistoryType"
应该返回“Test”,但我得到一个Unexpected Error
。有什么想法我做错了什么吗?
1条答案
按热度按时间beq87vna1#
您使用了错误的控制事件。大多数控件(甚至是普通的Jane文本框)都有databind事件。
您希望处理每一行,因此您希望使用数据“item”事件。
在大多数情况下,对于GridView,ListView和其他视图,它通常被称为“行数据绑定”之类的东西。
在中继器的情况下,我们甚至希望为每个项目,因此标记应该是这样的:
注意OnItemDataBound的使用-对于“每个”项目,它意味着帮助您记住。
所以,现在你的代码是这样的:
请注意,您必须如何测试这是一个“item”还是一个“alternaterow”项。原因是你有标题行,和其他类型的模板行,所以你必须在代码中确保你只是抓取+处理行,或交替行。
运行时,上面应该是这样的:
编辑:获取每一行绑定的完整数据行
那么,用“测试”来代替“硬编码”分配?
我们可以这样做:
结果: