C# 在gridview中显示最后4位数字
我有一个asp.net gridview和一个包含数字的列,例如1234567,我想显示最后4个数字,如xxx4567。这可能吗 我正在将gridview绑定到对象列表,如下所示:C# 在gridview中显示最后4位数字,c#,asp.net,gridview,format,C#,Asp.net,Gridview,Format,我有一个asp.net gridview和一个包含数字的列,例如1234567,我想显示最后4个数字,如xxx4567。这可能吗 我正在将gridview绑定到对象列表,如下所示: List<Details> objdet = Manager.Get_Details(ID); if (objdet!= null) { gvDetails.DataSource = objdet;
List<Details> objdet = Manager.Get_Details(ID);
if (objdet!= null)
{
gvDetails.DataSource = objdet;
gvDetails.DataBind();
}
List objdet=Manager.Get_详细信息(ID);
if(objdet!=null)
{
gvDetails.DataSource=objdet;
gvDetails.DataBind();
}
在我的网格中,我有:
<asp:GridView ID="gvDetails" runat="server" AllowPaging ="true"
AllowSorting ="true" AutoGenerateColumns="false" GridLines="None" CssClass="mGrid">
<Columns>
<asp:BoundField DataField="DetNumber" HeaderText="Number" ReadOnly="true" />
</Columns>
</asp:GridView>
一种方法是向Details对象添加属性,如下所示:
public string Last4Digits
{
//Return the last 4 digits
}
public class Details
{
public int Number { get; set; }
public string MaskedNumber
{
get
{
var temp = Number.ToString();
if (temp.Length <= 4)
{
return temp;
}
return new string('x', temp.Length - 4) + temp.Substring(temp.Length - 4);
}
}
}
public string CustomFormatter(string input)
{
if (input.Length < 5) return input;
char[] characters = input.ToCharArray();
for (int i = characters.Length - 5; i <= 0; i--)
{
characters[i] = 'X';
}
return new string(characters);
}
然后将网格绑定到该属性,而不是DetNumber。一种方法是将属性添加到Details对象,如下所示:
public string Last4Digits
{
//Return the last 4 digits
}
public class Details
{
public int Number { get; set; }
public string MaskedNumber
{
get
{
var temp = Number.ToString();
if (temp.Length <= 4)
{
return temp;
}
return new string('x', temp.Length - 4) + temp.Substring(temp.Length - 4);
}
}
}
public string CustomFormatter(string input)
{
if (input.Length < 5) return input;
char[] characters = input.ToCharArray();
for (int i = characters.Length - 5; i <= 0; i--)
{
characters[i] = 'X';
}
return new string(characters);
}
然后将网格绑定到该属性,而不是DetNumber。在详细信息对象中,添加另一个名为
NumberWithMask
的属性:
public const int NumberWithMaskLength = 4;
public string DetNumber { get; set; }
public string NumberWithMask
{
get
{
if (!string.IsNullOrEmpty(DetNumber) && DetNumber.Length > NumberWithMaskLength)
{
return new string('x', DetNumber.Length - NumberWithMaskLength ) + DetNumber.Substring(DetNumber.Length - NumberWithMaskLength );
}
return string.Empty;
}
}
然后在相关的边界字段中使用新字段
:
<asp:BoundField DataField="NumberWithMask" HeaderText="Number" ReadOnly="true" />
在详细信息对象中,添加另一个名为
NumberWithMask
的属性:
public const int NumberWithMaskLength = 4;
public string DetNumber { get; set; }
public string NumberWithMask
{
get
{
if (!string.IsNullOrEmpty(DetNumber) && DetNumber.Length > NumberWithMaskLength)
{
return new string('x', DetNumber.Length - NumberWithMaskLength ) + DetNumber.Substring(DetNumber.Length - NumberWithMaskLength );
}
return string.Empty;
}
}
然后在相关的边界字段中使用新字段
:
<asp:BoundField DataField="NumberWithMask" HeaderText="Number" ReadOnly="true" />
我建议您使用
行数据绑定事件
void GridView_RowDataBound(Object sender, GridViewRowEventArgs e)
{
if(e.Row.RowType == DataControlRowType.DataRow)
{
var value = e.Row.Cells[1].Text;
e.Row.Cells[1].Text = value.Substring(value.Length - 5, value.Length - 1);
}
}
添加事件
<asp:gridview onrowdatabound="GridView_RowDataBound"></asp:gridview>
我建议您使用
行数据绑定事件
void GridView_RowDataBound(Object sender, GridViewRowEventArgs e)
{
if(e.Row.RowType == DataControlRowType.DataRow)
{
var value = e.Row.Cells[1].Text;
e.Row.Cells[1].Text = value.Substring(value.Length - 5, value.Length - 1);
}
}
添加事件
<asp:gridview onrowdatabound="GridView_RowDataBound"></asp:gridview>
从gridview获取值,然后将其应用于字符串:
var result = mystring.Substring(mystring.Length - Math.Min(4, mystring.Length));
//this will show 4567
如果要在开始之前添加X,请执行以下操作:
result="XXX" + result;
从gridview获取值,然后将其应用于字符串:
var result = mystring.Substring(mystring.Length - Math.Min(4, mystring.Length));
//this will show 4567
如果要在开始之前添加X,请执行以下操作:
result="XXX" + result;
我将向您的
详细信息类添加一个属性,如下所示:
public string Last4Digits
{
//Return the last 4 digits
}
public class Details
{
public int Number { get; set; }
public string MaskedNumber
{
get
{
var temp = Number.ToString();
if (temp.Length <= 4)
{
return temp;
}
return new string('x', temp.Length - 4) + temp.Substring(temp.Length - 4);
}
}
}
public string CustomFormatter(string input)
{
if (input.Length < 5) return input;
char[] characters = input.ToCharArray();
for (int i = characters.Length - 5; i <= 0; i--)
{
characters[i] = 'X';
}
return new string(characters);
}
公共类详细信息
{
公共整数{get;set;}
公共字符串掩码数字
{
得到
{
var temp=Number.ToString();
如果(temp.Length我会像这样向您的详细信息类添加一个属性:
public string Last4Digits
{
//Return the last 4 digits
}
public class Details
{
public int Number { get; set; }
public string MaskedNumber
{
get
{
var temp = Number.ToString();
if (temp.Length <= 4)
{
return temp;
}
return new string('x', temp.Length - 4) + temp.Substring(temp.Length - 4);
}
}
}
public string CustomFormatter(string input)
{
if (input.Length < 5) return input;
char[] characters = input.ToCharArray();
for (int i = characters.Length - 5; i <= 0; i--)
{
characters[i] = 'X';
}
return new string(characters);
}
公共类详细信息
{
公共整数{get;set;}
公共字符串掩码数字
{
得到
{
var temp=Number.ToString();
如果(temp.Length设置一个helper方法来处理格式化,而不是试图在页面正面阻塞一堆代码,这是非常有用的。因此,在页面正面实现一个模板字段,以便您可以手动绑定字段值并调用您的helper
<asp:TemplateField HeaderText="My Field">
<ItemTemplate>
<asp:Label runat="server" ID="lblMyField"
Text='<%# CustomFormatter(Eval("MyField")) %>' />
</ItemTemplate>
</asp:TemplateField>
然后,对于自定义方法,请尝试以下操作:
public string Last4Digits
{
//Return the last 4 digits
}
public class Details
{
public int Number { get; set; }
public string MaskedNumber
{
get
{
var temp = Number.ToString();
if (temp.Length <= 4)
{
return temp;
}
return new string('x', temp.Length - 4) + temp.Substring(temp.Length - 4);
}
}
}
public string CustomFormatter(string input)
{
if (input.Length < 5) return input;
char[] characters = input.ToCharArray();
for (int i = characters.Length - 5; i <= 0; i--)
{
characters[i] = 'X';
}
return new string(characters);
}
publicstringcustomformatter(字符串输入)
{
if(input.Length<5)返回输入;
char[]characters=input.ToCharArray();
对于(int i=characters.Length-5;i设置一个帮助器方法来处理格式化,而不是试图在页面正面阻塞一堆代码,这是非常有用的。因此,在页面正面实现一个模板字段,以便您可以手动绑定字段值并调用帮助器
<asp:TemplateField HeaderText="My Field">
<ItemTemplate>
<asp:Label runat="server" ID="lblMyField"
Text='<%# CustomFormatter(Eval("MyField")) %>' />
</ItemTemplate>
</asp:TemplateField>
然后,对于自定义方法,请尝试以下操作:
public string Last4Digits
{
//Return the last 4 digits
}
public class Details
{
public int Number { get; set; }
public string MaskedNumber
{
get
{
var temp = Number.ToString();
if (temp.Length <= 4)
{
return temp;
}
return new string('x', temp.Length - 4) + temp.Substring(temp.Length - 4);
}
}
}
public string CustomFormatter(string input)
{
if (input.Length < 5) return input;
char[] characters = input.ToCharArray();
for (int i = characters.Length - 5; i <= 0; i--)
{
characters[i] = 'X';
}
return new string(characters);
}
publicstringcustomformatter(字符串输入)
{
if(input.Length<5)返回输入;
char[]characters=input.ToCharArray();
对于(inti=characters.Length-5;istringinput=“1234567”;
变量输出=新字符串(input.Select((c,i)=>i
string input=“1234567”;
变量输出=新字符串(input.Select((c,i)=>i
我如何放置x而不是数字?子字符串以剪切stringonrowdatabound=“GridView\u RowDataBound”我如何放置x而不是数字?子字符串以剪切stringonrowdatabound=“GridView\u RowDataBound”myfield是否是对象中的属性?是的。根据您的示例,myfield应该是“DetNumber”。以前没有看到。您标记的文本字段看起来像text=“CustomFormatter(Eval(“DetNumber”))”
?myfield是对象中的属性吗?是的。从您的示例中,myfield应该是“DetNumber”。以前没有看到。您标记的文本字段看起来像text=“CustomFormatter(Eval(“DetNumber”)”
?