设置与DataTable字段值对应的GridView行的文本

时间:2017-09-20 09:29:35

标签: c# asp.net gridview datatable

我有一个GridView,它的DataSource来自数据库表。我想根据数据库值在行中显示不同的文本。 在这里,对于 Billed For 列,如果字段BILLING_DTLS_STATUS的值为1,则应显示“NORTH COUNTER”,值为2,应显示“SOUTH COUNTER”,值为3显示“主要计数器”。

我还有一个按钮btnBilled,如果字段BILL_STATUS的值为1,则按钮文本应为“DISABLE”,如果为0则文本应为“ENABLE”。

<asp:GridView ID="GridView1"
    runat="server"
    AutoGenerateColumns="False" 
    OnRowDataBound="GridView1_RowDataBound">            
    <Columns>
        <asp:TemplateField HeaderText="S No." ItemStyle-Width="15%" >
            <ItemTemplate>
                <%#Container.DataItemIndex+1 %>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:BoundField
            DataField="BILLING_DTLS_STATUS"
            HeaderText="Billed For">
            <ItemStyle VerticalAlign="Top" />
        </asp:BoundField>
        <asp:BoundField DataField="BILLING_SUB_TYPE"
            HeaderText="Billing Type">
            <ItemStyle VerticalAlign="Top" />
        </asp:BoundField>
        <asp:BoundField DataField="BILLIG_AMT"
            HeaderText="Billing Amount">
            <ItemStyle VerticalAlign="Top" />
        </asp:BoundField>
        <asp:TemplateField HeaderText="STATUS">
        <ItemTemplate >
            <asp:Button ID="btnBilled" Text="" runat="server" />
        </ItemTemplate>
    </asp:TemplateField>
    </Columns>
</asp:GridView>

我最初更改了BILLING_DTLS_STATUS的值,然后填充了GridView,但我认为这种方法不正确。另外,如何根据BILL_STATUS字段的值设置按钮文本。

public void Get_Billing_Type()
        {
            try
            {
                DataTable dt = new DAL_Set_Billing_Type().Get_Billing_Type();
                foreach (DataRow row in dt.Rows)
                {
                    switch(row[0].ToString())
                    {
                        case "1":
                            {
                                row["BILLING_DTLS_STATUS"] = "NORTH COUNTER";
                                break;
                            }
                        case "2":
                            {
                                row["BILLING_DTLS_STATUS"] = "SOUTH COUNTER";
                                break;
                            }
                        case "3":
                            {
                                row["BILLING_DTLS_STATUS"] = "MAIN COUNTER";
                                break;
                            }
                    }
                }
                GridView1.DataSource = dt;
                GridView1.DataBind();
            }
            catch (Exception) {            }
        }

2 个答案:

答案 0 :(得分:1)

为什么不创建一个基于layer

返回正确类型的方法
layer = ModuleLayer.empty();

然后在GridView中,您可以获得正确的值。

BILLING_DTLS_STATUS

对于只有2个选项的按钮,您可以使用三元运算符。您也可以使用与上述相同的技术并为其创建方法。

public string Get_Billing_Type(int type)
{
    if (type == 1)
    {
        return "NORTH COUNTER";
    }
    else if (type == 2)
    {
        return "SOUTH COUNTER";
    }
    else if (type == 3)
    {
        return "MAIN COUNTER";
    }
    else
    {
        return "NO COUNTER";
    }
}

答案 1 :(得分:0)

Similar to this

我的两分钱: -

  • 如果只有两个值,则可以使用三元运算符。
  • 另外,我更喜欢从数据库查询中将显示文本更改为客户端 本身(SP,Linq)