我在更新面板中的多视图中使用数据列表来显示各种数据量。 DataList中的OnItemDataBound,根据项目,它添加了一个包含在div中的jQuery代码。有谁知道如何修复此代码,所以它的工作原理?这是一些示例代码:
<asp:UpdatePanel runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:MultiView runat="server">
<asp:View runat="server">
<asp:DataList ID="tmpDataTable" runat="server"
DataSourceID="tmpDataSource"
OnItemDataBound="tmpDataBound">
<ItemTemplate>
<a id="tstATag" runat="server" onclick="testingAlert();">
<%# Eval("Text_Col") %><a>
</ItemTemplate>
</asp:DataList>
<asp:SqlDataSource OnSelecting="PermSet" ID="tmpDataSource"
runat="server" ConnectionString="<%$ ConnectionStrings:Con %>"
SelectCommand="SELECT * FROM SampleTable">
</asp:SqlDataSource>
<div runat="server id="tmpDiv"></div>
</asp:View>
</asp:MultiView>
</ContentTemplate>
这是后端代码:
protected void tmpDataBound(object sender, DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item ||
e.Item.ItemType == ListItemType.AlternatingItem)
{
HtmlGenericControl tstATag = e.Item.FindControl("tstATag") as HtmlGenericControl;
tmpDiv.InnerHtml += @" <script type='text/javascript'>
function testingAlert() {
alert(tstATag.innerHtml);
}
</script>";
}
}
答案 0 :(得分:1)
我最终发现的是,当您在多视图中查看不同的视图时,您已经进行了整页回发,以便脚本正确注册。
答案 1 :(得分:0)
而不是从onitemdatabound设置div innerhtml而不是从页面加载
protected void Page_Load(object sender, EventArgs e)
{
tmpDiv.InnerHtml += @" <script type='text/javascript'>
function testingAlert() {
alert('Testing');
}
</script>";
}