2011-07-18 4 views
-1

以下のコードブロック(Designer-.ASPX)を参照して、実行時に内部グリッドビューをList<>でバインドしようとしています。内側のgridviewのList<>は外側グリッドのデータソースのメンバです。グリッド列のデータソースを保持する方法

デザインからわかるように、ユーザーが埋め込み "+"画像ボタンをクリックした後にのみ、内部グリッドビューをそれぞれのデータソースにバインドしたいと思います。

ボタンのクリック時に内部グリッドビューを見つけることはできますが、同じようにデータソースを保持する方法はわかりません。すべての列にはそれ自身のList<>データソースがあるので、私はセッションまたはビューの状態でそれを行うことはできません。

誰も私に内部のgridviewでそれを永続化させることができますし、ユーザーが「+」記号をクリックした後に実行時にバインドすることができますか?

<asp:GridView ID="gvMain" runat="server" AutoGenerateColumns="false"> 
    <Columns> 
     <asp:BoundField DataField="Name" HeaderText="Name" /> 
     <asp:TemplateField HeaderText="Lateral"> 
      <ItemTemplate> 
       <asp:CheckBox ID="chkLateral" runat="server" Checked='<%# Eval("Lateral") %>' /> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Types"> 
      <ItemTemplate> 
       <table> 
        <tr> 
         <td> 
          <asp:ImageButton OnClick="imgExpandbtn_OnClick" ID="imgExpandbtn" runat="server" ImageUrl="~/Styles/Images/Plus.png" /> 
          <asp:Label runat="server" ID="lblTypes" Text='<%# Eval("Types") %>'></asp:Label> 
         </td> 
        </tr> 
       </table> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField> 
      <ItemTemplate> 
       <asp:GridView ID="gvInner" runat="server" AutoGenerateColumns="false"> 
       </asp:GridView> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Active">  
      <ItemTemplate> 
       <%# (Boolean.Parse(Eval("IsActive").ToString())) ? "Y" : "N"%> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 
+0

私は本当にあなたが何を求めようとしているのか分からない。 「データソースを持続させる」とはどういう意味ですか?その行のボタンがクリックされたときに、その行のプロパティに内側のgridviewをバインドする方法を知りたいだけですか? –

+0

@Telarianええ、それは私が知る必要があるものです。 – Chat

+0

作業をしているコードビヘイビアを投稿すると非常に役に立ちます。私はあなたがコードビハインドで "imgExpandbtn_OnClick"を処理し、それがある行のプロパティに内部グリッドビューをバインドする作業をしていることを前提としています。 –

答えて

0

アウターグリッドと一緒にインナーグリッドのデータをフェッチしていますか?はいの場合、外部グリッドをバインドするとき、つまりデータバインディング式を使用してデザイン時にデータソースを設定するときに、内部グリッドをバインドする必要があります。次に、展開/折りたたみボタンのクリック時にインナーグリッドを表示/非表示にするには、Javaスクリプトを使用する必要があります。このアプローチは実装が簡単ではなく、展開/折りたたみボタンのクリック時にサーバーのトリップを節約します。

また、展開ボタンをクリックしたときにのみ、内側のグリッドをバインドすることもできます。しかし、そのような場合には、&をプリフェッチして内側のグリッドのデータを外側のグリッドと一緒に保存するのは意味がありません。このようなシナリオでは、展開ボタンがクリックされたときに内部グリッドのデータを取得する必要があります(データがオンデマンドで取得されるため、「データソースを維持」)。

+0

実際、外部グリッドのデータソースは汎用リストであり、そのリストにはメンバーとして別のList <>が含まれています。私はこの内側のグリッドビューをその内側のList <>にバインドする必要があります。だから私は実行時に内部グリッドビューのデータを取得する柔軟性がありません。あなたの最初の選択肢は私にとっては妥当と思われますが。私は、以下に述べるようにデータソースの設計時間を設定しようとしました。しかし、アプリケーションを実行しようとした後、内部グリッドビューは全く表示されませんでした。 コードサンプルがある場合は、 – Chat

+1

@Chat 'Lstbusinesstypes'がリストを返すプロパティであると仮定すると、そのコードはうまくいくはずです。しかし、正確な列が(AutoGenerateColumns = false'で)マークアップ内に存在しないため、正確にはどこに作成されているのかはわかりません。マークアップにいくつかの列を追加してチェックすることをお勧めします。 – VinayC

+1

またはAutoGenerateColumnsをオンにしてください... –

関連する問題