在GridView上显示之前操纵SQL值

时间:2014-04-04 07:14:13

标签: c# asp.net sql gridview

N,V,C,D 是GridView的绑定列中的变量。

当我在GridView中显示此表格时,我希望显示 新建,已验证,已取消,已删除

我的GridView调用我的数据库中运行select Query的过程。我是否需要更改查询或添加GridView功能?我本身不想更改数据库值。

我该怎么做?

这是我现在的界限:

<asp:BoundField 
    DataField="Status"
    HeaderText="Status"
    SortExpression="Status" />

4 个答案:

答案 0 :(得分:1)

这应该可以在C#中实现 - 至少如果你只想显示值而不是编辑它们。在CellFormatting事件中,您只需更改要显示的值。

private void gridview_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
  if (e.Value.equals("N")) e.Value = "New";
  else if(e.Value.equals("V")) e.Value = "Verified";
  else if(e.Value.equals("C")) e.Value = "Cancelled";
  else if(e.Value.equals("D")) e.Value = "Deleted";
}

我现在还没有C#,所以可能会有错别字。试试吧。

答案 1 :(得分:1)

在您的查询中,

Select 
      YourFields
      case 
      when YourConditionField= 'N' then 'New' 
      when YourConditionField= 'V' then 'Verified'
      when YourConditionField= 'C' then 'Cancelled'
      when YourConditionField= 'D' then 'Deleted'
      end,
from table

首先在GridView中,

您可以使用RowDataBound事件,您需要在网格视图中添加带有标签的模板列

<asp:TemplateField>
    <ItemTemplate>
        <asp:Label ID="labelResult" runat="server" />
    </ItemTemplate>
</asp:TemplateField>


protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if(e.Row.RowType == DataControlRowType.DataRow)
    {
       string value = e.Row.Cells[0].Text;
       Next find the label in the template field.
        Label myLabel = (Label) e.Row.FindControl("myLabel");
        if (value == "N")
        {
            myLabel.Text = "New";
        }
        else if (value == "V")
        {
            myLabel.Text = "Verified";
        }
        else if (value == "C")
        {
            myLabel.Text = "Cancelled";
        }
        else if (value == "D")
        {
            myLabel.Text = "Deleted";
        }
    }
}

答案 2 :(得分:0)

   <asp:BoundField HeaderText="NEW" DataField="N" ></asp:BoundField>

答案 3 :(得分:0)

首先,我从默认的 BoundField 编辑了GridViewControl的状态列,并将其更改为 ItemTemplate

(我删除了自动生成的 EditItemTemplate 标记)

 <asp:Label ID="lblStatus"  
                 runat="server" 
                 Text='<%# GetLabelText(Eval("status")) %>'>
 </asp:Label>

然后在我的CS文件中,我添加了以下代码:

public string GetLabelText(object dataItem)
    {
    string text = "";
    string val = dataItem as string;
    switch (val)
        {
        case "N":   text = "New"; 
             break;
        case "V":   text = "Verified";
            break;
        case "F":   text = "Fulfilled";
            break;
        case "C":   text = "Cancelled";
            break;
        }
    return text;
    }

这就像一个魅力。谢谢你的帮助,伙计们!