RadDatePicker 和 RadTimePicker 在回发后失去样式

Posted

技术标签:

【中文标题】RadDatePicker 和 RadTimePicker 在回发后失去样式【英文标题】:RadDatePicker and RadTimePicker loses style after postback 【发布时间】:2012-06-19 14:33:04 【问题描述】:

我在我的网站上发现了一个错误,但我似乎找不到解决方案。我正在动态生成控件,其中两个是 RadDatePicker 和 RadTimePicker。当页面上发生不同的事件时,我会在生成控件后在真假之间更改控件的可见性(主要基于页面是处于“编辑”模式还是查看模式)。但是,在控件可见的第一个实例之后,控件将失去其样式。参考下面的截图:

如果有人有任何建议或建议,那就太好了。谢谢

更新:这是所要求的代码

这隐藏和显示控件(只需更改真/假)

for (int i = 0; i < customProperties.Rows.Count; i++)

    customProperties.FindControl("CustomControl" + (i + 1).ToString()).Visible = false;
    customProperties.FindControl("lblCustomControl" + (i + 1).ToString()).Visible = true;
    Type aType = customProperties.FindControl("CustomControl" + (i + 1).ToString()).GetType();
    if (aType.Name == "RadBinaryImage")
    customProperties.FindControl("CustomControl" + (i + 1).ToString() + "_btn").Visible = false;

所以基本上它会在 htmltable (customProperties) 中搜索控件并更改可见性

这是生成控件的地方:

case DynamicFieldTypeEnum.Date:
    RadDatePicker dp = new RadDatePicker();
    dp = currentValues as RadDatePicker;
    if (dp.SelectedDate == null)
        customProperty.Text = "Not Specified";
    else
        customProperty.Text = dp.SelectedDate.Value.ToString(dp.DateInput.DateFormat);
    dp.ID = "CustomControl" + (position + 1).ToString();

    newControls[0] = customProperty;
    newControls[1] = dp;
    break;
case DynamicFieldTypeEnum.Time:
    RadTimePicker tp = new RadTimePicker();
    tp = currentValues as RadTimePicker;
    if (tp.SelectedDate == null)
        customProperty.Text = "Not Specified";
    else
        customProperty.Text = tp.SelectedDate.Value.ToString(tp.DateInput.DateFormat);
    tp.ID = "CustomControl" + (position + 1).ToString();

    newControls[0] = customProperty;
    newControls[1] = tp;
    break;

这是在给定对象定义然后返回控件数组的方法中。控件数组中的第一个值是“查看”模式的标签,第二个控件是“编辑”模式的控件。

这个数组然后被传递给一个不同的方法,它将控件放置在一个表格单元格中,该单元格被放置在一个表格行中,然后放在表格“customProperties”中

【问题讨论】:

首先,是否有任何回发?其次,这些控件是否位于更新面板之类的内部? 是的,当我“取消”编辑模式时,会发生回发,即。不保存信息。这就是这个错误发生的时间。控件放置在一个普通的 html 表格中,没有别的。 还有一个愚蠢的问题,但是您的页面上是否有 RadStyleSheetManager 控件? 不,我没有。我是不是该?哈哈。 很可能,telerik.com/help/aspnet-ajax/stylesheetmanager.html(Telerik 在控件上的页面供参考)。使用控件上的小弹出框添加所需的 web.config 条目。试试这个,让我知道会发生什么,如果它有效,我会在下面给出一个答案,但如果没有,我会继续为你挖掘。 【参考方案1】:

我已经遇到过这种问题。

作为 Telerik Support 的建议,我在发现您的问题的页面中添加了此代码。

    <telerik:RadStyleSheetManager ID="RadCssManager" runat="server">
        <StyleSheets>
            <telerik:StyleSheetReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Skins.RadDatePicker.css" />
            <telerik:StyleSheetReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Skins.MetroTouch.RadDatePicker.MetroTouch.css" />
        </StyleSheets>
    </telerik:RadStyleSheetManager>

Ps:就我而言,我使用的是“MetroTouch”皮肤。

【讨论】:

以上是关于RadDatePicker 和 RadTimePicker 在回发后失去样式的主要内容,如果未能解决你的问题,请参考以下文章

RadDatePicker中的日期和小时格式

删除 RadDatePicker 的 RadCalendar 内的边框

在选中的单选按钮上启用/禁用 RadDatePicker

无法从 Javascript 检索 RadDatePicker 对象

向 RadDatePicker 添加自定义属性

如何使用数据库检索日期设置 raddatepicker 日期