在正在访问的当前“行”中获取Repeater Label

时间:2013-08-07 13:45:55

标签: c# asp.net label repeater

我有以下中继器:

<asp:Repeater ID="RptLeaveRequests" runat="server" 
    onitemdatabound="RptLeaveRequests_ItemDataBound"> <ItemTemplate>
<table id="tableItem" runat="server">
    <tr>
            <td style="width: 100px;">
                <asp:Label ID="lblDate" runat="server" Text='<%#Eval("Date", "{0:dd/M/yyyy}") %>'></asp:Label>
            </td>
            <td style="width: 100px;">
                <asp:Label ID="lblHours" runat="server" Text='<%#Eval("Hours") %>'></asp:Label>
            </td>
            <td style="width: 200px;">
                <asp:Label ID="lblPeriod" runat="server" Text='<%#Eval("AMorPM") %>'></asp:Label>
            </td>
            <td style="width: 200px; font-size:10px;">
                <asp:Label ID="lblNote" runat="server" Text='<%#Eval("Note") %>'></asp:Label>
            </td>
            <td style="50px">
                <asp:RadioButtonList ID="rbtVerified" runat="server" >
                    <asp:ListItem Value="1">Accept</asp:ListItem>
                    <asp:ListItem Value="2">Reject</asp:ListItem>
                </asp:RadioButtonList>
            </td>
            <td>
                <asp:TextBox ID="txtNotes" runat="server" ></asp:TextBox>
            </td>
        </tr>
</table> 

 

我正在尝试获取每个Label中的数据(例如: Convert.ToString((Label)item.FindControl(“Date”)) )但它是返回一个空字符串,我做错了什么:

 foreach (RepeaterItem item in RptLeaveRequests.Items)
            {
                var rdbList = item.FindControl("rbtVerified") as RadioButtonList;
                switch (rdbList.SelectedValue)
                {
                    case "1":
                        if (new LeaveLogic().AddLeaveEmployee(Convert.ToString((Label)item.FindControl("Date")), Convert.ToDouble((Label)item.FindControl("Hours")), Convert.ToString((Label)item.FindControl("AMorPM")), "Vacational Leave", Convert.ToInt32(Context.User.Identity.Name), Convert.ToString((Label)item.FindControl("Note")))
                        {
                            Response.Redirect(Request.RawUrl);
                        }
                        break;

1 个答案:

答案 0 :(得分:1)

我认为它没有用,因为你没有找到控件。如果找不到控件,FindControl将返回null,如果对象值为null,Convert.ToString将返回空字符串。

从我所看到的,您正在搜索错误的字符串ID。因此,Date应该是lblDate而不是.Text

如果您处于调试构建模式,请记住ASP.NET喜欢在运行时更改控件名称,因此“lblDate”控件可能实际上不是“lblDate”。因此,您可以尝试在浏览器上进行调试,并检查元素的ID以获取其实际ID。

此外,如果您想要标签的实际数据(请注意((Label)item.FindControl("lblDate")).Text ),您可能希望这样做:

{{1}}