0

更新パネルにあるマルチビューでデータリストを使用して、さまざまな量のデータを表示しています。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>";
    }
}
4

2 に答える 2

1

私が見つけたのは、マルチビューで別のビューを表示しているときに、スクリプトを正しく登録するためにフルページのポストバックを行っていることです。

于 2013-01-11T19:19:38.363 に答える
0

onitemdatabound から div innerhtml を設定する代わりに、ページの読み込みから実行します

   protected void Page_Load(object sender, EventArgs e)
        {
            tmpDiv.InnerHtml += @"   <script type='text/javascript'>
                                                        function testingAlert() {
                                                            alert('Testing');
                                                        }

                                                    </script>";
        }
于 2013-01-11T05:07:25.950 に答える