0

ああ..私は深すぎます。

メインページには、更新パネル内にDataGridが含まれています。

このデータグリッドの列の1つは、ユーザーコントロールです。

このユーザーコントロールには、更新パネル内に独自のデータグリッドがあります。

メインページが読み込まれます。ユーザーは、メインページのデータグリッドをバインドするファイルを選択します。datagridrow行がロードされたので、ユーザーはユーザーコントロールをクリックします。

コントロールは、モーダルポップアップdivマジックを使用して表示されます。コントロールの目的は、ストアドプロシージャを呼び出してルックアップを実行することです。ユーザーが検索する値を入力し、[検索]をクリックします。

btnSearchイベントが発生し、ストアドプロシージャが呼び出され、データがネットワークを介して返送され、ユーザーコントロールが独自のデータグリッドをバインドしますが、コントロールのグリッドが更新されてユーザーに表示されることはありません。

(私が思うに)起こっていることは、ユーザーコントロールがデータをバインドすると、メインページのデータグリッドも再バインドされ、ユーザーにコンテンツを表示する前にユーザーコントロールが再インスタンス化されることです。

メインページのスクリプトマネージャーは次のとおりです。

<asp:ScriptManager ID="sm1" runat="Server" EnablePartialRendering="true">
    </asp:ScriptManager>

メインページの更新パネルは次のとおりです。

<asp:UpdatePanel ID="upPnlLookup" runat="server" UpdateMode="Conditional">
            <ContentTemplate>

メインページのデータグリッド内のユーザーコントロールは次のとおりです。

<asp:TemplateColumn>
   <ItemTemplate>
      <uc1:EmployeeLookup ID="el" runat="Server" Optional="True" />
   </ItemTemplate>
</asp:TemplateColumn>

ユーザーコントロールの更新パネルは次のとおりです。

<asp:UpdatePanel ID="upPnlLookup" runat="server" UpdateMode="Conditional">
   <ContentTemplate>

ユーザーコントロールのグリッドは次のとおりです。

<asp:GridView ID="grdvwLookupResults"
              runat="server"
              AutoGenerateColumns="False"
              AllowPaging="True"
              OnPageIndexChanging="grdvwLookupResults_PageIndexChanging"
              Width="100%"
              OnRowCommand="grdvwLookupResults_RowCommand"
              OnSorting="grdvwLookupResult_Sorting" 
              EmptyDataText="No data found matching that criteria."   
              AllowSorting="True" >
   <Columns>
       <asp:ButtonField CommandName="Select" Text="Select" />
       <asp:BoundField DataField="ID" HeaderText = "Employee ID" SortExpression="ID" />
       <asp:BoundField DataField="FullName" HeaderText="Emlployee Name" SortExpression="FullName" />
       <asp:BoundField DataField="Status" HeaderText="Status" SortExpression="Status" Visible="false" />
    </Columns>
</asp:GridView>

これをどのように配線するかについての手がかりは大歓迎です。

4

0 に答える 0