不从aspx页面调用Codebehind函数

时间:2012-03-08 22:46:14

标签: asp.net html-table code-behind pager

可能是一个“doh”时刻,但无法获得此代码隐藏功能。事实上,调试显示它甚至没有被调用,这可能是最终显示在网页上的指示,只能看到:

<table id="dnn_ctr422_ViewPloads_PagerTable">.... 

注意缺少的“风格”。非常感谢任何帮助。

//aspx code
<table id="PagerTable" style="<%# GetPagerStyle() %>" runat="server">
   <tr>
   <td> 
      <asp:DataPager ID="PloadPager" runat="server" PagedControlID="PloadListView" OnPreRender ="PloadPager_PreRender" PageSize="20" >

//code behind      
protected String GetPagerStyle( )
    {
        return "background-color:" + (String)Settings["TableBackgroundColor"];
    }

4 个答案:

答案 0 :(得分:1)

从你所展示的内容不清楚为什么它没有运行。您可能会针对与您的源不相同的版本运行,但我认为您已经尝试过完全重建。

知道您也可以在ASPX页面中设置断点。但我的预感是,如果不打电话,就不会召唤更多。您是否尝试过Page_LoadPage_PreRender

另一种可能性是在调用PagerTable之前,其他代码更改了您的GetPagerStyle对象。在这种情况下,如果在运行之前更改了style-attribute,则可能会产生此问题。解决方法并确定您是否可以设置样式是在Page_Load中执行以下操作:

// correction courtesy of Tim Schmelter ;)
PagerTable.Style.Add(HtmlTextWriterStyle.BackgroundColor, 
    (String)Settings["TableBackgroundColor"]);
编辑:注意,正如其他人所指出的那样,以下内容也应该有效(尝试过,因为存在一些争议,请参阅其他答案):

<table id="PagerTable" style="<%= GetPagerStyle() %>">

但请注意,我删除了runat="server"。这意味着,你不能再从代码隐藏中使用它了。我只是假设你在代码隐藏中没有使用这个控件做任何其他事情,所以这是否适合你的情况我不知道。

答案 1 :(得分:1)

您是否已拨打Page.DataBind,因为<%#...是绑定表达式?

inline asp.net tags... sorting them all out

除此之外,你总是可以从codebehind设置这些东西:

protected void Page_Load(object sender, EventArgs e)
{
    PagerTable.Style.Add("background-color", (String)Settings["TableBackgroundColor"]);
}

答案 2 :(得分:1)

只需在代码中替换#=,

style="<%=GetPagerStyle()%>"应该可以正常使用。

答案 3 :(得分:0)

你试过吗

<%= GetPagerStyle() %>