当标签在服务器端更改时,我该如何获取标签的文本?

3

我试图在不进行页面回发时将标签的文本分配给隐藏字段,但我失败了。这是我所做的。

If Not IsPostBack Then
            Dim structPayperiod As strcPayperiodDet


            structPayperiod = objTimeSystem.getCurrentPayPeriod()
            hdnPayperiodseq.Value = structPayperiod.Payperiodid
            hdnPayPeriodStartDt.Value = structPayperiod.startdate.ToString

            lblPayPeriodStartDt.Text = structPayperiod.startdate

            displayPayrollIdOrgs(objTimeSystem.getPayrollIDOrgs())

            grd_Employees.Visible = False

            RptErrorsMessages.DataSource = objTimeSystem.getErrorMessages()
            RptErrorsMessages.DataBind()
        Else
            hdnPayPeriodStartDt.Value = lblPayPeriodStartDt.Text.ToString

        End If

在else语句中出现问题,标签值没有更新为新的标签值。lblPayPeriodStartDt.Text没有更新。
标签的值是日期,每次在客户端使用日历控件更改日期时都会更新。但是,标签的值不会随着该值的更新而刷新。
<asp:Label ID="lblPayPeriodStartDt" runat="server"></asp:Label>
<img src="../Images/calendar.gif" class="clsCursorHand" alt="" title="Select Pay Period"
                            onclick="Javascript:PayPeriodsPayroll('<%=lblPayPeriodStartDt.ClientId %>',event);"/>

你的日历控件在每次更改日期时都会进行回发吗? - RandomUs1r
你能否发布 PayPeriodsPayroll js 函数的代码,其中你为 lblPayPeriodStartDt 分配了值? - Dennis R
2个回答

2

您在客户端修改的 <asp:Label 的值是无法在后台代码中获取的。如果我没记错,ASP.NET 标签在客户端呈现为 span 元素:

我认为,只有作为输入控件呈现并在客户端更改值的控件才会更新视图状态,所以您唯一的选择就是使用隐藏字段。

您只需要反过来做。

1.将隐藏字段传递给 js 函数,并在您的 js 函数 PayPeriodsPayroll 中像下面这样更新隐藏字段的值:

 function PayPeriodsPayroll (hdnObj)
 {
   var hdnPayPeriod = document.getElementById(hdnObj);
   hdnPayPeriod.val('the value you want to set');
 }

然后在您的页面加载时

If Not IsPostBack Then
   ....
Else
    // update label with the hidden field value if you need it
    lblPayPeriodStartDt.Text = hdnPayPeriodStartDt.Value
End If

非常感谢。这一次我在 JS 函数中仅传递了隐藏字段的值,而不是标签,它有效了。由于周末没有访问代码,所以很抱歉回复晚了。 - user8811

1
当你在日历控件中更改日期时,肯定不是每次都向服务器发送请求。你可以使用JavaScript从客户端向服务器发送请求,使用__doPostback()函数。请参见此链接:__doPostback函数示例

谢谢,是的,我没有在日期更改时进行后台提交...这很有帮助。 - user8811

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接