[ASP .NET] Repeater achtergrond kleur aanpassen

Pagina: 1
Acties:

  • Mottebelke
  • Registratie: Juni 2001
  • Laatst online: 10:00
Het probleem dat ik heb is als volgt:

Ik heb een repeater op m'n pagina staan die telkens een regel van een tabel vult:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
            <asp:repeater id="RepeaterDays" Runat="server">
                <ItemTemplate>
                    <tr runat="server" id="tableRow">
                        <td><b>
                                <asp:Label ID="WorkDate" Runat="Server" Text="<%#LoadWorkDate(Container.DataItem)%>">
                                </asp:Label></b>&nbsp;</td>
                        <td>
                            <asp:HyperLink Runat="server" ID="LinkProject">
                                <%#DataBinder.Eval(Container.DataItem, "ProjectName")%>
                            </asp:HyperLink></td>
                        <td>
                            <asp:Label ID="LabelTask" Runat="server">
                                <%#DataBinder.Eval(Container.DataItem, "TaskName")%>
                            </asp:Label></td>
                        <td>
                            <asp:Label ID="LabelHours" Runat="server">
                                <%#DataBinder.Eval(Container.DataItem, "Hours")%>
                            </asp:Label></td>
                        <td>
                            <asp:Linkbutton Runat="server" ID="ButtonEdit" CommandName='
               <%#DataBinder.Eval(Container.DataItem, "TimesheetDetailID")%>' 
               CommandArgument='<%# LoadCurrentMonday(Container.DataItem)%
                >'>Edit</asp:Linkbutton>
                            |
                            <asp:Linkbutton Runat="server" ID="ButtonDelete" CommandName='
                <%#DataBinder.Eval(Container.DataItem, "TimesheetDetailID")%>' 
                CommandArgument='<%# LoadCurrentMonday(Container.DataItem)%
                >'>Delete</asp:Linkbutton>
                        </td>
                    </tr>
                </ItemTemplate>
            </asp:repeater>


Als ik dan op ButtonEdit klik op een van de regels wil ik dat deze regel een andere achtergrondkleur krijgt en dat de gegevens van die regel in de juiste Textboxen verschijnen.

Het weergeven van de gegevens in de textboxen is geen probleem, maar het veranderen van de achtergrondkleur wel.
Hier even de code van de eventhandlers van ItemCreated en ItemCommand:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
    private void RepeaterDays_ItemCreated(object source, System.Web.UI.WebControls.RepeaterItemEventArgs e)
        {
            LinkButton deleteButton;
            deleteButton = (LinkButton)e.Item.FindControl("ButtonDelete");
            deleteButton.Attributes.Add("OnClick","javascript:return confirm('Delete this task?'); ");

            if (Session["EditTimeSheetDetailId"] != null)
            {
                LinkButton editButton = (LinkButton)e.Item.FindControl("ButtonEdit");

                if (editButton.CommandName == Session["EditTimeSheetDetailId"].ToString())
                {
                    ((System.Web.UI.HtmlControls.HtmlTableRow)e.Item.FindControl("tableRow")).BgColor = "#999999";
                }
            }
        }

        private void RepeaterDays_ItemCommand(object source, System.Web.UI.WebControls.RepeaterCommandEventArgs e)
        {
            string commandName = e.CommandName;
            Log.LogInfo("RepeaterDays_ItemCommand : TimesheetDetailID " + e.CommandName);
            if (((LinkButton)e.CommandSource).ID == "ButtonEdit")
            {
                DataTable dt = timesheetaction.GetTimeSheetDetail(Convert.ToInt32(e.CommandName));
                DateTime timesheetDate = Convert.ToDateTime(dt.Rows[0].ItemArray[5]);
                ListDate.SelectedValue = timesheetDate.ToShortDateString();
                ListProject.SelectedValue = Convert.ToString(dt.Rows[0].ItemArray[2]);
                this.LoadTaskList();
                ListTask.SelectedValue = Convert.ToString(dt.Rows[0].ItemArray[3]);
                Hours.Text = Convert.ToString(dt.Rows[0].ItemArray[4]);
                Session["EditTimeSheetDetailId"] = Convert.ToInt32(e.CommandName);
            }
            else
            {
                DataTable dt = timesheetaction.GetTimesheet(user.ID,Convert.ToDateTime(e.CommandArgument));
                timesheetaction.DeleteTimesheetDetail(Convert.ToInt32(e.CommandName),Convert.ToInt32(dt.Rows[0].ItemArray[0]));
                Log.LogInfo("DeletTimesheetDetail : TimesheetDetailID " + e.CommandName + " is deleted");
                this.PopulateCurrentTimesheet(Convert.ToDateTime(e.CommandArgument));
            }
        }


Ik probeer dus in ItemCreated de commandname van de ButtonEdit te achterhalen, maar deze is steeds leeg als ik hem inlees.

Heeft iemand misschien een oplossing of een duwtje in de goed richting voor me?

[ Voor 13% gewijzigd door Mottebelke op 30-03-2004 18:31 . Reden: Layout enigzins aangepast. ]


  • Mottebelke
  • Registratie: Juni 2001
  • Laatst online: 10:00
Ik heb inmiddels zelf al een oplossing gevonden.

Ik bind de data van de Repeater op het eind van ItemCommand gewoon opnieuw en heb de code voor het veranderen van de kleur verplaatst naar ItemDataBound.

En nu werkt het perfect!

Dus dit topic mag dicht.