0

タイマーを介して更新され、UpdatePanel 内で期待どおりに動作するリストボックスがあります。

ただし、selectedindexchanged イベントを発生させることはできません。これは部分的なポストバックと関係があると思います。これを機能させるために何ができるか知っている人はいますか?

UpdatePanel の外に移動すると、正常に動作します。ただし、明らかに部分的なポストバックはできません。

<asp:UpdatePanel ID="UpdatePanel" runat="server" UpdateMode="Conditional">
<ContentTemplate>
    <asp:Timer ID="Timer1" runat="server" OnTick="Timer1_Tick" Interval="500"></asp:Timer>
    <asp:ListBox ID="ListBox_JobPositions" OnSelectedIndexChanged="ListBox_JobPositions_SelectedIndexChanged"  runat="server" Height="750px" Width="300px" DataSourceID="sqlDataSource" DataTextField="Company" DataValueField="Pid"></asp:ListBox>
</ContentTemplate>
</asp:UpdatePanel>

アップデート:

以下の変更を試みましたが、タイマー イベントは引き続き機能しますが、selectedindexchanged イベントは機能しません。私はこれで迷子になっています。

<asp:UpdatePanel ID="UpdatePanel" runat="server" ChildrenAsTriggers="False" UpdateMode="Conditional">
<ContentTemplate>
    <asp:Timer ID="Timer1" runat="server" OnTick="Timer1_Tick" Interval="500"></asp:Timer>
    <asp:ListBox ID="ListBox_JobPositions" runat="server" Height="750px" Width="300px" DataSourceID="sqlDataSource" DataTextField="Company" DataValueField="Pid" OnSelectedIndexChanged="ListBox_JobPositions_SelectedIndexChanged" AutoPostBack="True"></asp:ListBox>
</ContentTemplate>
<Triggers>
    <asp:AsyncPostBackTrigger ControlID="Timer1" />
</Triggers>

リストボックスが UpdatePanel 内にある場合は発生しないが、そうでない場合は機能するイベントを次に示します。

protected void ListBox_JobPositions_SelectedIndexChanged(object sender, EventArgs e)
    {
        Response.Write("test");
    }
4

2 に答える 2

4

イベントを取得していない理由は、変更イベントがポストバックを引き起こしていないためです。ポストバックはタイマーが原因です。

asp.net が受け取るイベントはタイマー イベントであり、ListBox イベントではありません。

この問題を解決するには、AutoPostBacktrue に設定する必要があります。これにより、データが変更されてイベントが発生するとすぐに ListBox が PostBack を実行します。

<asp:ListBox ID="ListBox_JobPositions" AutoPostBack="True"  
     OnSelectedIndexChanged="ListBox_JobPositions_SelectedIndexChanged"  
     runat="server" Height="750px" Width="300px" 
     DataSourceID="sqlDataSource" 
     DataTextField="Company" 
     DataValueField="Pid">
</asp:ListBox>

を に設定したのでUpdateMode、もtrue にConditional設定する必要があります。ChildrenAsTriggersこのように List は PostBack を引き起こし、それも部分的な更新になります。

<asp:UpdatePanel ID="UpdatePanel" runat="server" 
                 UpdateMode="Conditional" 
                 ChildrenAsTriggers="True">
于 2013-03-21T05:26:04.620 に答える
0

現在は機能しており、Async および Full Postback トリガーを手動で指定する必要がありました。ご協力いただきありがとうございます。

<asp:UpdatePanel ID="UpdatePanel" runat="server" ChildrenAsTriggers="False" UpdateMode="Conditional">
<ContentTemplate>
    <asp:Timer ID="Timer1" runat="server" OnTick="Timer1_Tick" Interval="500"></asp:Timer>
    <asp:ListBox ID="ListBox_JobPositions" runat="server" Height="750px" Width="300px" DataSourceID="sqlDataSource" DataTextField="Company" DataValueField="Pid" OnSelectedIndexChanged="ListBox_JobPositions_SelectedIndexChanged" AutoPostBack="True"></asp:ListBox>
</ContentTemplate>
<Triggers>
    <asp:AsyncPostBackTrigger ControlID="Timer1" />
    <asp:PostBackTrigger ControlID="ListBox_JobPositions" /> 
</Triggers>
</asp:UpdatePanel>
于 2013-03-21T06:30:53.800 に答える