1

私はDropDownListリピーターの内側にバインドしています。以下は私のマークアップです

 <asp:Repeater ID="Repeater2" runat="server" 
    onitemdatabound="Repeater2_ItemDataBound">
      <HeaderTemplate>
     <asp:DropDownList ID="DropDownList8" runat="server">
    <asp:ListItem>Select</asp:ListItem>
    <asp:ListItem>Left</asp:ListItem>
    <asp:ListItem>Right</asp:ListItem>
    <asp:ListItem>SubString</asp:ListItem>
   </asp:DropDownList>
   <asp:DropDownList ID="DropDownList7" runat="server">
 <asp:ListItem>1</asp:ListItem>
   <asp:ListItem>2</asp:ListItem>
   <asp:ListItem>3</asp:ListItem>
   </asp:DropDownList>
   <asp:DropDownList ID="DropDownList1" runat="server">
   </asp:DropDownList>
   <asp:DropDownList ID="DropDownList2" runat="server">
   </asp:DropDownList>
   <asp:Button ID="Button1" runat="server" Text="Button" />

   </HeaderTemplate>

  <FooterTemplate>
  <br />
   <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
 </FooterTemplate>
  </asp:Repeater>

 

protected void Repeater2_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
  try
  {

      if (e.Item.ItemType == ListItemType.Header)
      {

          DataTable dt = new DataTable();
          dt = Common.LoadExample();

          DropDownList ddl = (DropDownList)e.Item.FindControl("DropDownList2");
          ddl.DataSource = dt;
          ddl.DataTextField = "Name";
          ddl.DataValueField = "Name";

      }
  }
  catch (Exception ex)
  {
      throw;

  }
}

しかし、ブレークポイントがここでスキップされているため、ドロップダウン リストを埋めることができませんe.Item.ItemType == ListItemType.Header。どうすればこれを解決できますか?

4

1 に答える 1

0

ヘッダー行バインディングの場合、コードを からItemDataBoundに移動します。ItemCreated

-- 更新された回答 --

これは、項目テンプレートなしで追加した場合にのみ機能しますItemTemplate。空白のデータソースを設定すると、期待どおりにグリッドがバインドされません。

アイテム テンプレートを追加し、いくつかのダミー データをバインドしてください

于 2012-11-01T09:55:43.427 に答える