0

私は奇妙な状況にあります。

UpdatePanel 内に Repeater があります。リピーターには、新しいウィンドウを生成するリンクボタンがあります。つまり、新しいウィンドウを生成する必要があります。リピーターが UpdatePanel の外側にある場合、正常に機能しました。今はそうではありません。

リピーターを AsyncPostBack トリガーにしようとしましたが、うまくいきませんでした:

          <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
                <Triggers>
                    <asp:AsyncPostBackTrigger ControlID="rptEmployees" />
                   <asp:AsyncPostBackTrigger ControlID="imgClear" />
                </Triggers>

Linkbutton を ItemDataBound の AsyncPBtrigger にしようとしましたが、うまくいきませんでした:

    LinkButton lb = (LinkButton)e.Item.FindControl("lbtnVcard");
          sm1.RegisterAsyncPostBackControl(lb);

Linkbutton を PostBackTrigger にすると、ポップアップが 1 回表示されます。リピーターの ItemCommand は常にヒットされますが、その後リンクボタンの 1 つを押すと (ハード更新を行うまで)、ポップアップは表示されません。

   ClientScript.RegisterClientScriptBlock(GetType(), "", "<script>var" +
                                                                  @"  win=window.open('vCard.aspx',null,'width=50,height=50," +
                                                                  @"top=100,left=100','true');</script>", false);

最後に、これが私の ItemTemplate です:

  <ItemTemplate>
                            <!--For IE9 there can be no whitespace -->
                            <tr>
                                <td width="140"><strong><%# Eval("DisplayName") %></strong><asp:HiddenField runat="server" ID="HFname" Value='<%# Eval("SamAccountName") %>'/></td>
                                <td width="100"><%# Eval("Office") %></td>
                                <td width="120"><%# Eval("WorkPhone") %></td>
                                <td width="120"><%# Eval("MobilePhone") %></td>
                                <td width="300" style="text-align: left"><a href="mailto:<%# Eval("EmailAddress") %>"><%# Eval("EmailAddress") %></a></td>
                                <td><div class="button"><asp:LinkButton CommandName="vCard" runat="server" ID="lbtnVcard" Text="vCard" CssClass="button"/></div></td>
                            </tr>


                        </ItemTemplate>

手がかり/考えはありますか??

ありがとう。

更新: データをメモリにロードするためにサーバーにアクセスする必要があるため、まだ問題があります。

4

1 に答える 1

1

ウィンドウを開くページに js を定義する

<script type="text/javascript">

 function OpenWin(){

window.open('vCard.aspx',null,'width=50,height=50,top=100,left=100','true');

}

</script>

それを指すように itemtemplate を変更します。

  <ItemTemplate>
                            <!--For IE9 there can be no whitespace -->
                            <tr>
                                <td width="140"><strong><%# Eval("DisplayName") %></strong><asp:HiddenField runat="server" ID="HFname" Value='<%# Eval("SamAccountName") %>'/></td>
                                <td width="100"><%# Eval("Office") %></td>
                                <td width="120"><%# Eval("WorkPhone") %></td>
                                <td width="120"><%# Eval("MobilePhone") %></td>
                                <td width="300" style="text-align: left"><a href="mailto:<%# Eval("EmailAddress") %>"><%# Eval("EmailAddress") %></a></td>
                                <td><div class="button"><asp:LinkButton CommandName="vCard" runat="server" ID="lbtnVcard" Text="vCard" CssClass="button" OnClientClick="OpenWin()"/></div></td>
                            </tr>


                        </ItemTemplate>

ボタンに接続した js を削除して、動作が変わるかどうかを確認できます。

于 2013-02-03T23:31:32.087 に答える