Domanda

Ho una pagina con un semplice controllo Dropdown and Repeater in Page.on Invia il controllo del ripetitore è vincolato a DataSource1 che ha 3 colonne. Scenario 1

Ora il mio requisito è se selezione l'opzione2, dovrebbe legarsi a DataSource2 che contiene 4 colonne. Scenario 2

<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound">
<HeaderTemplate>
    <tr>
        <th align="left">Header1</th>
        <th align="left">Header3</th>
        <th align="left">Header2</th>
    </tr>
</HeaderTemplate>
<ItemTemplate>
    <tr>
        <td>
            <asp:Label ID="Header1" runat="server" /></td>
        <td>
            <asp:Label ID="Header3" runat="server" /></td>
        <td>
            <asp:Label ID="Header2" runat="server" /></td>
    </tr>
</ItemTemplate>
.

È possibile che lo stesso ripetitore si legisca dinamicamente alle origini dati eterogenee? Come posso specificare il modello di intestazione e i modelli di articoli in esecuzione?Questo scenario può essere implementato con un solo controllo ripetitore e più fonti di dati eterogenei?

È stato utile?

Soluzione

Sentenze al di sotto del codice ti aiuterà.

<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound">
    <HeaderTemplate>
        <tr class="">
            <asp:Repeater ID="Header1" runat="server">
                <ItemTemplate>
                    <th align="left"><%# Container.DataItem %>
                    </th>
                </ItemTemplate>
            </asp:Repeater>
        </tr>
    </HeaderTemplate>
    <ItemTemplate>
        <tr class="">
            <asp:Repeater ID="Item1" runat="server">
                <ItemTemplate>
                    <td><%# Container.DataItem %>
                    </td>
                </ItemTemplate>
            </asp:Repeater>
        </tr>
    </ItemTemplate>
</asp:Repeater>


protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e) 
    {
        if (e.Item.ItemType == ListItemType.Header)
        {
            Repeater headerRepeater = e.Item.FindControl("Header1") as Repeater;
            headerRepeater.DataSource = dt.Columns;
            headerRepeater.DataBind();
        }

       if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            Repeater columnRepeater = e.Item.FindControl("Item1") as Repeater;
            var row = e.Item.DataItem as System.Data.DataRowView;
            columnRepeater.DataSource = row.Row.ItemArray;
            columnRepeater.DataBind();
        }
    }
.

o in altro modo utilizzando 2 diversi utente control.First Controllo utente contiene ripetitore1, secondo contenere ripetitore2.then Dynamic Aggiungi questi ripetitori alla pagina, al codice dietro

Altri suggerimenti

Puoi semplicemente usare come questo -

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
   using (SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["RBConnectionString"].ConnectionString))
   {
      SqlCommand cmd = new SqlCommand("select * from Customers", con);
      cmd.CommandType = CommandType.StoredProcedure;
      SqlDataAdapter adpt = new SqlDataAdapter(cmd);
      DataTable dt = new DataTable();
      adpt.Fill(dt);
      repeaterObj.DataSource = dt;
      repeaterObj.DataBind();
      cmd.Dispose();
    }
 }
.

Impostazioni Try Autopostback= TRUE sul tuo DropDownList.Quindi, avere un gestore di eventi "selectedIndexChanged" sulla configurazione di COODBehind per leggere il valore e impostare il DataSource di conseguenza, qualcosa di simile a:

repeater1.DataSource=<yourdatasource>
repeater1.DataBind()
.

Se il tuo DataSource utilizza sempre le stesse colonne per la tua presentazione, allora questo non dovrebbe essere un problema.Se i tuoi dati DataSources varieranno nelle colonne di dati che restituiscono, allora il commento di Kashif nella tua domanda potrebbe aiutarti ad alcuni.Altrimenti, devi solo compilare la logica sopra per impostare la proprietà DataSource del tuo ripetitore in qualunque cosa sia il tuo DataSource ...

Spero che questo aiuti

        <HeaderTemplate>
            <table id="masterDataTable" class="reportTable list issues" width="100%">
                <thead>
                    <tr>
                        <asp:Literal ID="literalHeader" runat="server"></asp:Literal>
                    </tr>
                </thead>
                <tbody>
        </HeaderTemplate>
        <ItemTemplate>
            <tr>
                <asp:Literal ID="literals" runat="server"></asp:Literal>
            </tr>
        </ItemTemplate>
        <FooterTemplate>
            </tbody> </table>
        </FooterTemplate>
    </asp:Repeater>
.

.

  // javascript Function

    <script type="text/javascript">
   $(document).ready(function () {
  $('#ddlReport').removeClass('required');
   $('.sort').click(function () {
    $('#hdnColumnName').val($(this).text());
    $('#hdnColumnOrder').val($(this).attr('class'));
    $(this).toggleClass("desc asc");
    $("#lnkSort").click();
     });
  }  );

  // Bind repeater

     DataTable dt = objReport.GetCustomRecord();
   fn = new List<string>();
   for (int i = 0; i < dt.Columns.Count; i++)
  {
    if (dt.Columns[i].ColumnName != "Maxcount" )
    {
        fn.Add(dt.Columns[i].ColumnName);
    }
}

Repeater1.DataSource = dt;
Repeater1.DataBind();



      protected void Repeater1_databinding(object sender,   RepeaterItemEventArgs e)
{
   if (e.Item.ItemType == ListItemType.Header)
 {
   if (e.Item.FindControl("literalHeader") != null)
   {
          StringBuilder sb = new StringBuilder();
         Literal li = e.Item.FindControl("literalHeader") as Literal;

         fieldName().ForEach(delegate(string fn)
           {
           if (hdnColumnName.Value != fn.ToString())
             {
                sb.Append("<th width=\"10%\"> <a id=\"btnCustomerName\" class=\"sort desc\" onclick=\"btnSorts_onclick()\" style=\"cursor:pointer;text-decoration: none !important;\" >"
                + fn.ToString() + "</a></th>");
             }
            else
            {
               if (hdnColumnOrder.Value == "sort asc")
                sb.Append("<th width=\"10%\"> <a id=\"btnCustomerName\" class=\"sort desc\"  onclick=\"btnSorts_onclick()\" style=\"cursor:pointer;text-decoration: none !important;\" >"
               + fn.ToString() + "</a></th>");
            else
                sb.Append("<th width=\"10%\"> <a id=\"btnCustomerName\" class=\"sort asc\" onclick=\"btnSorts_onclick()\" style=\"cursor:pointer;text-decoration: none !important;\">"
                                           + fn.ToString() + "</a></th>");
        }
    });
    li.Text = sb.ToString();

   }

 }
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
 {
 if (e.Item.FindControl("literals") != null)
 {
    DataRowView drv = (DataRowView)e.Item.DataItem;
    Literal li = e.Item.FindControl("literals") as Literal;
    StringBuilder sb = new StringBuilder();
    fieldName().ForEach(delegate(string fn)
    {
        sb.Append("<td>" + drv[fn.ToString()] + "</td>");
    });
    li.Text = sb.ToString();
 }
  }
 }
.

con bootstrap e datatables.net plugin

protected void rptReport_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.Header)
            {
                Repeater headerRepeater = e.Item.FindControl("Header1") as Repeater;
                headerRepeater.DataSource = dtOrder.Columns;
                headerRepeater.DataBind();
            }

            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {
                Repeater columnRepeater = e.Item.FindControl("Item1") as Repeater;
                var row = e.Item.DataItem as System.Data.DataRowView;
                columnRepeater.DataSource = row.Row.ItemArray;
                columnRepeater.DataBind();
            }
        }

<link href="/datatables/datatables.min.css" rel="stylesheet" type="text/css" />
    <link href="/bootstrap/datatables.bootstrap.css" rel="stylesheet" type="text/css" />

    <div class="row">
        <div class="col-md-12">
            <asp:Panel runat="server" ID="pnlReport">
                <div class="portlet light bordered">
                    <div class="portlet-title">
                        <div class="caption font-dark">
                            <i class="icon-settings font-dark"></i>
                            <span class="caption-subject bold">Sonuçlar </span>
                        </div>
                        <div class="tools"></div>
                    </div>
                    <div class="portlet-body">
                        <asp:Repeater ID="rptReport" runat="server" OnItemDataBound="rptReport_ItemDataBound">
                            <HeaderTemplate>
                                <table class="table table-striped table-bordered table-hover" id="tblReport">
                                    <thead>
                                        <tr>
                                            <asp:Repeater ID="Header1" runat="server">
                                                <ItemTemplate>
                                                    <th><%# Container.DataItem %></th>
                                                </ItemTemplate>
                                            </asp:Repeater>
                                        </tr>
                                    </thead>
                                    <tbody>
                            </HeaderTemplate>
                            <ItemTemplate>
                                <tr>
                                    <asp:Repeater ID="Item1" runat="server">
                                        <ItemTemplate>
                                            <td><%# Container.DataItem %></td>
                                        </ItemTemplate>
                                    </asp:Repeater>
                                </tr>
                            </ItemTemplate>
                            <FooterTemplate>
                                </tbody>
                                </table>
                            </FooterTemplate>
                        </asp:Repeater>
                    </div>
                </div>
            </asp:Panel>
        </div>
    </div>

    <script type="text/javascript" src='<%=ResolveUrl("~/jquery.min.js") %>'></script>
    <script type="text/javascript" src='<%=ResolveUrl("~/bootstrap.min.js") %>'></script>
<script src='<%=ResolveUrl("~/scripts/datatable.js") %>' type="text/javascript"></script>
    <script src='<%=ResolveUrl("~/datatables/datatables.min.js") %>' type="text/javascript"></script>
    <script src='<%=ResolveUrl("~/bootstrap/datatables.bootstrap.js") %>' type="text/javascript"></script>

<script>
        $(document).ready(function () {
            $('#tblReport').DataTable({
                "language": {
                    "url": "//cdn.datatables.net/plug-ins/9dcbecd42ad/i18n/Turkish.json",
                    "decimal": ",",
                    "thousands": ".",
                    buttons: {
                        copyTitle: 'Panoya kopyalandı',
                        copyKeys: 'Appuyez sur <i>ctrl</i> ou <i>\u2318</i> + <i>C</i> pour copier les données du tableau à votre presse-papiers. <br><br>Pour annuler, cliquez sur ce message ou appuyez sur Echap.',
                        copySuccess: {
                            _: '%d satır kopyalandı',
                            1: '1 satır kopyalandı'
                        }
                    }
                },

                buttons: [
                { extend: 'print', className: 'btn dark btn-outline', text: 'Yazdır' },
                { extend: 'copy', className: 'btn red btn-outline', text: 'Kopyala' },
                { extend: 'pdf', className: 'btn green btn-outline' },
                { extend: 'excel', className: 'btn yellow btn-outline ' },
                { extend: 'csv', className: 'btn purple btn-outline ' },
                { extend: 'colvis', className: 'btn dark btn-outline', text: 'Kolonlar' }
                ],
                "order": [
                    [0, 'asc']
                ],

                "lengthMenu": [
                    [5, 10, 50, -1],
                    [5, 10, 50, "Hepsi"]
                ],
                "pageLength": 10,
                "dom": "<'row' <'col-md-12'B>><'row'<'col-md-6 col-sm-12'l><'col-md-6 col-sm-12'f>r><'table-scrollable't><'row'<'col-md-5 col-sm-12'i><'col-md-7 col-sm-12'p>>",
            });
        });
    </script>
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top