尝试在控件中格式化Eval()在运行时c#asp.net期间失败

时间:2015-10-01 18:08:38

标签: c# asp.net .net

我暂时没有在Razor引擎之外工作,但是在这个当前项目中我需要对模板进行更改。我试图在设计器客户端方面格式化字符串输出,但它失败了。目前的代码如下:

   <table>
       <!-- Data Result -->
         <tr>          
           <!-- Here we are just padding the results to have a fixed length of (".")  n = s.PadRight((t-n)+n1) -->                                                              
           <td><%Eval("Text").ToString().PadRight((40 - Eval("Text").ToString().Length), Convert.ToChar("."));%></div>
           <td><%Eval("Total").ToString().PadRight((10 - Eval("Total").ToString().Length), Convert.ToChar(" ")); %></div>
           <td>(<%CalcPercent(Eval("Total").ToString());%>)</td>
        </tr>
    </table>

你知道我不能用这种方式格式化,并且必须在控制之外进行,或者可能在Eval处理它之前吗?没有意义,为什么它不起作用。

我是否必须首先将Eval()值分配给变量,然后处理格式化?

这是我得到的错误:

  

数据绑定方法,如Eval(),XPath()和Bind()只能是   在数据绑定控件的上下文中使用。

2 个答案:

答案 0 :(得分:0)

我注意到你错过了一个等号,你的Eval应该是:<%= Eval("Total") %>。我不完全确定,但我知道通常的做法是:

<div class="..." style="...">
     <%= Eval("Total") %>
</div>

你要么应用你的风格:

  • 内联
  • 编号

我不相信你能以这种方式追加,因为它不是一个真正的控制。我会建议以上。

答案 1 :(得分:0)

我无法让它工作,所以我选择了以下解决方案。有点像一个不同的人。

 public static string GetFormattedStringPadRight(this string val, int length, char charToPad)
    {
        string returnValue = string.Empty;
        if (!String.IsNullOrEmpty(val))
        {
            returnValue = val.ToString().PadRight((40 - val.Length), charToPad);
        }

        return returnValue;
    }

然后在客户端:

 <ItemTemplate>
       <table>
          <!-- Data Result -->
            <tr>          
               <!-- Here we are just padding the results to have a fixed length of (".")  n = s.PadRight((t-n)+n1) -->                                                              
                 <td><%#Eval("Text").ToString().GetFormattedStringPadRight(40, Convert.ToChar(".")) %></div>
                 <td><%#Eval("Total").ToString().GetFormattedStringPadRight(10, Convert.ToChar(" ")) %></div>
                 <td>(<%#CalcPercent(Eval("Total").ToString())%>)</td>
              </tr>
          </table>
        </ItemTemplate>

我不知道为什么这种格式有效,但不是我以前的格式。感谢。