문제

Page.On Submit Recepter 컨트롤이있는 간단한 드롭 다운 및 리피터 컨트롤이있는 페이지가 3 열이있는 DataSource1에 바인딩됩니다. 시나리오 1

이제 나의 요구 사항이 옵션 2를 선택하면 4 열이있는 DataSource2에 바인딩해야합니다. 시나리오 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>
.

동일한 리피터가 이기종 데이터 소스에 동적으로 바인딩 할 수 있습니까? 런타임에 헤더 템플릿과 항목 템플릿을 어떻게 지정할 수 있습니까?이 시나리오는 하나의 중계기 제어 및 여러 이기종 데이터 소스로 구현 될 수 있습니까?

도움이 되었습니까?

해결책

아래의 코드가 당신을 도울 것입니다.

<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();
        }
    }
.

또는 2 개의 다른 사용자 Control.First 사용자 제어를 사용하는 다른 방법으로 Repeater1, 두 번째 repeater2가 포함됩니다.이 중계기를 페이지에 코드에 추가하십시오

다른 팁

단순히 이렇게 사용할 수 있습니다 -

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();
    }
 }
.

설정 AutoPostBack= DropDownList에서 true를 사용해보십시오.그런 다음 codebehind 설정에 "selectedindexchanged"이벤트 핸들러가 값을 읽고 그에 따라 데이터 소스를 설정합니다.

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

DataSource가 항상 프레젠테이션에 동일한 열을 사용하는 경우 문제가되지 않아야합니다.DataSources가 리턴하는 데이터의 열에 따라 다르므로 Kashif의 질문에 귀하가 도움이 될 수 있습니다.그렇지 않으면 위의 논리를 작성하여 데이터 소스가

repeater의 DataSource 속성을 설정해야합니다.

희망이 도움이

        <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();
 }
  }
 }
.

부트 스트랩 및 DataTables.net 플러그인

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>
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top