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:
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:
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?
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> </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. ]