ASP.NET C#BoundField格式(删除前导零)

时间:2014-02-27 13:54:09

标签: c# asp.net gridview

Gridview中BoundField的DataFormatString如何看起来不会有前导零?

到目前为止,我得到了这个:

 <asp:BoundField DataField="NUMBER" HeaderText="Id. number" DataFormatString="{0:d}">

预期结果:

000001 - &gt; 1

002101 - &gt; 2101

我试图用official documentationthis page来解决这个问题。到目前为止都没有成功。

4 个答案:

答案 0 :(得分:2)

如果要在boundfield中正确格式化某些内容,我总是建议将其转换为模板字段。使用它比绑定场更容易。以下是模板字段转换后的外观示例。

<asp:TemplateField ShowHeader="False" Visible="False">
       <EditItemTemplate>
          <asp:TextBox ID="tbEditNumber" runat="server" Text='<%# Bind("Number","{0:n}") %>'></asp:TextBox>
      </EditItemTemplate>
      <ItemTemplate>
           <asp:TextBox ID="tbNumber" runat="server" Text='<%# Bind("Number","{0:n}") %>'></asp:TextBox>
      </ItemTemplate>
</asp:TemplateField>

在我放置的模板字段中..

  

Text ='&lt;%#Bind(“yourfield”,“{0:n}”)%&gt;'

这应该将其格式化为一个数字,并且应该删除前导零。

编辑:您可以尝试

  

Text ='&lt;%#String.Format(“{0:n}”,Eval(“Number”))%&gt;'

答案 1 :(得分:1)

另一种方法是使用String.Trim函数。以下代码是我完成您要完成的工作的方式:

<asp:TemplateField>
    <ItemTemplate>
        <asp:Label runat="server" Text="<%#Eval(&quot;NUMBER&quot;).ToString().TrimStart('0')%>" ></asp:Label>
    </ItemTemplate>
</asp:TemplateField>

棘手的部分是使用引号和单引号的正确组合。你可以使用

&quot;

代替您正在显示的数据字段列周围的引号字符。

答案 2 :(得分:0)

试试这个。这种方式更清洁。

标记

<asp:TemplateField HeaderText="Id. number">
        <EditItemTemplate>
            <asp:TextBox ID="tbEditNumber" runat="server" Text='<%# ConvertToDigit(Eval("Number")) %>'></asp:TextBox>
        </EditItemTemplate>
        <ItemTemplate>
            <asp:TextBox ID="tbNumber" runat="server" Text='<%# ConvertToDigit(Eval("Number")) %>'></asp:TextBox>
        </ItemTemplate>
</asp:TemplateField>

代码隐藏

protected int ConvertToDigit(object oNum)
{
    var i = 0;
    if (oNum != null) int.TryParse(oNum.ToString(), out i);
    return i;
}

答案 3 :(得分:0)

简化Kimmels答案,不需要放在服务器标签中,不需要关注单引号或双引号,不关心底层数据类型,因为它将对象转换为字符串,然后执行string.TrimStart,不需要代码隐藏

<asp:TemplateField HeaderText="Work Order">
    <ItemTemplate>
        <%# Eval("WorkOrder").ToString().TrimStart("0".ToCharArray()) %>
    </ItemTemplate>
</asp:TemplateField>

0123456 = 123456

0012345 = 12345

如果需要服务器标签,只需用单引号

开始和结束文本标签
<asp:Label ID="lblWorkOrder" runat="server" Text='<%# Eval("WorkOrder").ToString().TrimStart("0".ToCharArray()) %>' />