jQuery和JavaScript无法在MultiView中运行

时间:2013-01-11 04:27:01

标签: c# javascript jquery asp.net datalist

我在更新面板中的多视图中使用数据列表来显示各种数据量。 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>";
    }
}

2 个答案:

答案 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>";
        }