gpt4 book ai didi

c# - 在 DataGridView 列中显示方法值

转载 作者:太空宇宙 更新时间:2023-11-03 14:10:40 25 4
gpt4 key购买 nike

我有一个类 Order,它有一个枚举属性 Status

当我将列表发送到 DataGridView 时,它会将 Status 列显示为枚举标记,如“PaymentWaiting”。正确的必须是“等待付款”。

我有一个方法可以接收 Status 枚举并返回具有正确名称的字符串。如何将方法指定为列值?

最佳答案

一种方法是将 Status 列转换为模板列并指定您的辅助方法:

<asp:TemplateField HeaderText="Status">
<ItemTemplate>
<asp:Literal runat="server" Text='<%#EnumToString(Eval("Status")) %>'></asp:Literal>
</ItemTemplate>
</asp:TemplateField>

但请注意 EnumToString 需要接收一个对象而不是 Enum 类型,因为 Eval 返回 object;因此,您的方法应如下所示:

protected string EnumToString(object s)
{
switch ((EStatus) Enum.Parse(typeof(EStatus), s.ToString()))
{
case EStatus.AwaitingApproval: return "Awaiting Approval";
case EStatus.PaymentWaiting: return "Payment Waiting";
default: return s.ToString();
}
}

完整详情

标记

<asp:GridView ID="GridView1" AutoGenerateColumns="false" runat="server">
<Columns>
<asp:BoundField DataField="Column1" />
<asp:TemplateField HeaderText="Status">
<ItemTemplate>
<asp:Literal runat="server" Text='<%#EnumToString(Eval("Status")) %>'></asp:Literal>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

//My Enum definition
public enum EStatus
{
Pending,
Ready,
Ordered,
AwaitingApproval,
PaymentWaiting
}

//this is how I populate my grid with dummy data
private void bindGridView()
{
DataTable t = new DataTable();
t.Columns.Add("Column1");
t.Columns.Add("Status");
DataRow r = null;
for (int i = 0; i < 10; i++)
{
r = t.NewRow();
if(i%2==0)
r.ItemArray = new object[] { "Name "+i, EStatus.AwaitingApproval};
else
r.ItemArray = new object[] { "Name " + i, EStatus.PaymentWaiting };

t.Rows.Add(r);
}
GridView1.DataSource = t;
GridView1.DataBind();
}

结果快照

enter image description here

关于c# - 在 DataGridView 列中显示方法值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7970218/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com