Всем добрый день.. Есть такая проблема. В таблице в базе данных есть ряд записей. скажем о выплатах на каждый месяц(на каждый месяц своя только одна запись). В дальнейшем - одна запись на месяц года. В настоящий момент в ней есть записи по 3м месяцам. остальных записей соответственно нет. Вывод данных в таблицу производится через 2 вложенных repeater'а ( Один по столбцам, другой по строкам). не спрашивайте почему так, это требование заказчика, иначе в данном случае нельзя  Итак.. Так как есть только 3 записи репитер выводит в строке 3 ячейки (скажем с label'ами). Однако я хочу чтобы он вывел 12 записей. 3- с заполненными, 9 с пустыми. Таким образом я смогу через js сделать селект и по щелчку на ячейке выводить интерфейс добавления информации по выплате за выбранный месяц. Пытался ловить события репитера - однако они все срабатываю после бинда данных именно 3( в нашем случае) раза. Подскажите каким образом здесь лучше поступить..
Код разметки
| Код | <asp:Repeater ID="Repeater2" runat="server" OnItemDataBound="OnRepeater2_ItemDataBound"> <HeaderTemplate> <table border="dashed"> <tr> <%=MakeMonthList() %> </tr> </HeaderTemplate> <ItemTemplate> <tr> <td> <asp:Label ID="IdLabel" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "EmployeeId")%>'></asp:Label> <asp:Label ID="NameLabel" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "FirstName")%>'></asp:Label> </td> <asp:Repeater ID="rptMonths" runat="server" OnItemDataBound="OnrptMonth_ItemDataBound" > <ItemTemplate> <td id='<%#DataBinder.Eval(Container.DataItem, "ID")%>' > <asp:Label ID="AdvanceLabel" ForeColor="Coral" runat="server" Text='<%#Eval("Advance") %>'></asp:Label> <asp:HiddenField ID="HiddenMonth" Value ='<%#DataBinder.Eval(Container.DataItem, "Month", "{0:d}")%>' runat="server" /> <asp:HiddenField ID="HiddenPaymentId" runat="server" Value='<%#DataBinder.Eval(Container.DataItem, "ID")%>'></asp:HiddenField> <asp:Label ID="MoneyLabel" runat="server" Text='<%#Eval("Summary") %>'></asp:Label> </td> </ItemTemplate> </asp:Repeater> </tr> </ItemTemplate> <FooterTemplate> </table> </FooterTemplate> </asp:Repeater>
|
Код страницы
| Код | protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { //.... Repeater2.DataSource = EmployeeList.Select(); Repeater2.DataBind(); //.... } } protected void OnRepeater2_ItemDataBound(object sender, RepeaterItemEventArgs e) { if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { Label IdLabel = (Label)e.Item.FindControl("IdLabel"); Repeater rptMonths = (Repeater)e.Item.FindControl("rptMonths"); Int32 tmp; Int32.TryParse(IdLabel.Text, out tmp); rptMonths.DataSource = PaymentList.GetStatusListByYear(tmp,2008); rptMonths.DataBind(); } }
public String MakeMonthList() { String html = "<td>   </td>"; foreach (object i in MonthList.Items) { html +="<td>" + i.ToString()+"</td>"; } return html; }
|
|