更改从ASP.NET中的SQL查询创建的表中显示的数据

时间:2014-07-07 19:19:44

标签: c# asp.net sql

我无法弄清楚如何搜索并获得我需要的东西。我试图弄清楚如何改变数据显示的方式。因此,举例来说,如果我检索的tinyint是1或0,并且我想分别显示“是”或“否”,我该如何解决?这是我在aspx中的内容:

        <ASP:DataGrid id="AdminDataGrid" runat="server"
            AutoGenerateColumns="False" AllowSorting="true"
            Width="700px" CellPadding="3" EnableViewState="True"
            BackColor="#EEEEEE" BorderColor="Black" HeaderStyle-BackColor="Gray"
            Font-Name="Verdana" Font-Size="8pt" Font-Names="Verdana"  
        >
            <Columns>
                <asp:BoundColumn DataField="Active" HeaderText="Active State" ReadOnly="true" SortExpression="Active" />
            </Columns>
        </ASP:DataGrid>

要清楚,我只是希望它在每次从SQL表中提取数据时自动更新值。

我一直在尝试一些事情,但我不确定何时以及如何进行更改。成员对象:

DataTable DataTableAdmin = new DataTable();
DataView DataViewAdmin;

然后在页面加载中:

DataTableAdmin = myDataAccessObject.GetTable(strQuery);
DataViewAdmin = new DataView(DataTableAdmin);

我尝试过类似的事情:

if (DataTableAdmin.Columns[0] = "0")
{
    DataTableAdmin.Columns[0] = "No";
}
else
{
    DataTableAdmin.Columns.[0] = "Yes";
}

但我知道这不对,因为它不知道要做什么行。但无论如何,我希望它能普遍适用于所有行。然后我想我可以使用过滤器对DataView做一些事情:

DataViewAdmin.RowFilter("Active = '0'");

但后来我不确定如何对我得到的内容进行修改。我正在考虑的其他事情是用一系列复选框替换列,这些复选框将根据值的大小进行检查或取消选中。然后可以检查或取消选中该值,并且可以在数据库中更新该值。

2 个答案:

答案 0 :(得分:1)

这来自我在评论中发布的问题。非常有趣的两个列在2个帖子中被命名为Active。

<asp:TemplateField HeaderText="Active" SortExpression="Active">
    <ItemTemplate><%# (Boolean.Parse(Eval("Active").ToString())) ? "Yes" : "No" %></ItemTemplate>
</asp:TemplateField>

答案 1 :(得分:0)

C Shaper的回答让我走上正轨,但需要进行大量的调整。第一个问题是:code blocks are not supported in this context.将对象更改为TemplateColumn修复了该问题。然后它没有解析这个值,说String was not recognized as a valid Boolean.在做了进一步的研究后,我得到了以下工作:

<asp:TemplateColumn HeaderText="Active" SortExpression="Active">
    <ItemTemplate><%# Convert.ToBoolean(Convert.ToInt32(Eval("Active").ToString())) ? "Yes" : "No" %></ItemTemplate>
</asp:TemplateColumn>