如何用文本替换gridview中的复选框?

时间:2010-11-23 20:37:57

标签: c# asp.net-2.0

我有以下gridview:

        <asp:GridView ID="gdvReport" runat="server" AutoGenerateColumns="False" DataSourceID="sdseport">
        <Columns>
            <asp:BoundField DataField="Phone" HeaderText="Phone" SortExpression="Phone">
                <ControlStyle Width="250px" />
            </asp:BoundField>
            <asp:BoundField DataField="ToCall" HeaderText="Foramt" SortExpression="ToCall" />
        </Columns>
    </asp:GridView>

第二行是数据库中的bool,但我不想向用户显示复选框或true \ false。

如何显示这样的内容? 0 =不要打电话 1 =致电我们

4 个答案:

答案 0 :(得分:3)

您可以创建TemplateField而不是BoundField。

<asp:TemplateField HeaderText="Whatever">
    <ItemTemplate>
        <asp:Literal ID="litTextValue" runat="server" />
    </ItemTemplate>
</asp:TemplateField>

然后,您可以将一些内联代码显示为您想要的文本或处理RowDataBound事件以在那里执行逻辑。

答案 1 :(得分:1)

我最终只是为此使用了OnRowDataBound。

<asp:GridView ID="gdvReport" runat="server" AutoGenerateColumns="False" DataSourceID="sdseport" OnRowDataBound="OnRowDataBound">
    <Columns>
        <asp:BoundField DataField="Phone" HeaderText="Phone" SortExpression="Phone">
            <ControlStyle Width="250px" />
        </asp:BoundField>
        <asp:BoundField DataField="ToCall" HeaderText="Foramt" SortExpression="ToCall" />
    </Columns>
</asp:GridView>


protected void OnRowDataBound(object sender, EventArgs e)
{  
    GridViewRowEventArgs ea = e as GridViewRowEventArgs;
    if (ea.Row.RowType == DataControlRowType.DataRow)
    {
        DataRowView drv = ea.Row.DataItem as DataRowView;
        Object ob = drv["Phone"];
        if (!Convert.IsDBNull(ob))
        {
            bool iParsedValue = false;
            if (bool.TryParse(ob.ToString(), out iParsedValue))
            {
                TableCell cell = ea.Row.Cells[1];
                if (iParsedValue == false)
                {

                    cell.Text = "Don't Call";
                }
                else
                {
                    cell.Text = "Call Us";
                }

            }
        }
    }
}

现在它运作良好。

答案 2 :(得分:0)

我做了这个并且有效

     <asp:Literal ID="isActive" runat="server"
     Text='<%#Eval("isActive")==DBNull.Value ?
     "inactive":Convert.ToBoolean(Eval("isActive"))?"active":"inactive"
     %>'></asp:Literal>

这是重要的部分。

Text ='&lt;%#Eval(“isActive”)== DBNull.Value?“inactive”:Convert.ToBoolean(Eval(“isActive”))?“active”:“inactive”%&gt;'< / p>

希望有所帮助。

答案 3 :(得分:0)

您应该在sql中执行此操作,而不是使用CASE语句在此处执行此操作 比如

CASE ToCall WHEN '1' THEN 'Call' ELSE 'Do not call' END AS ToCall

然后使用简单的绑定字段,例如

<asp:BoundField DataField="ToCall" HeaderText="Foramt" SortExpression="ToCall" />