【问题标题】:displaying checkmark in gridview在gridview中显示复选标记
【发布时间】:2011-10-10 20:20:58
【问题描述】:

我有一个网格视图和一个数据源。数据源中有一个列,如果它是某个值(文本),我想解释并显示一个复选标记。 My question is similar to this。可行吗?注意:如果我在 gridview 中添加图像字段,它会尝试绑定到数据库中的图像 url,这对我来说不是这种情况。我不想更改数据库,只需在 gridview 中显示一个复选标记即可。

【问题讨论】:

  • 我想我必须添加模板字段并在项目模板中添加图像链接。
  • 模板字段就这么不可取吗?

标签: asp.net gridview sqldatasource


【解决方案1】:

我希望这将帮助您如何将复选框放在网格视图中

%@ Page Language="C#" AutoEventWireup="true" CodeFile="CheckBoxExample.aspx.cs" Inherits="CheckBoxExample" %>

<title>CheckBox Example</title>

<form id="form1" runat="server">

<div>

    <asp:GridView ID="ProductGridView" runat="server" AutoGenerateColumns="False" DataKeyNames="ItemId">
        <Columns>

            <asp:BoundField DataField="ItemDescription" DataFormatString="{0}" HeaderText="Item" />

            <asp:BoundField DataField="ItemPrice" DataFormatString="{0:C}" HeaderText="Price" />

            <asp:TemplateField HeaderText="Purchase">

               <ItemTemplate>

                    <asp:CheckBox ID="CheckBoxPurchase" runat="server" Enabled="true" />
               </ItemTemplate>

            </asp:TemplateField>

        </Columns>

    </asp:GridView>

    <asp:Button ID="Purchase" runat="server" Text="Purchase Checked Items" />

</div>

</form>

【讨论】:

  • 对不起,问题是要求复选标记,而不是复选框。我在正确的轨道上,但需要从模板字段调用一个函数并传递字段的值,以便我可以从函数返回 true 或 false。谢谢
【解决方案2】:

在您的网格视图列中插入一个模板列:

<asp:TemplateField>
    <ItemTemplate>
       <asp:CheckBox ID="chkSelect" runat="server" />
    </ItemTemplate>
 </asp:TemplateField>

编辑:为复选标记

<asp:TemplateField>
    <ItemTemplate>
       <asp:Image ImageUrl='<%# GetCheckMark(Eval("Checked")) %>' ID="imgCheckMark" runat="server" />
    </ItemTemplate>
 </asp:TemplateField>

在代码隐藏中

protected string GetCheckMark(bool checked){
  return checked?"~/images/checkmark.gif":"~/images/uncheckmark.gif";
}

就是这样:)

【讨论】:

  • 你可以使用这个jquery插件将复选框转换为复选标记jqidealforms.com
  • 这对我来说效果很好,尽管“checked”是一个 C# 关键字,需要更改为其他内容。
【解决方案3】:

如果您要绑定到数据源中的布尔列,您可以将CheckBoxField 添加到 GridView 的列中,这将显示您需要的内容。

但听起来您想根据文本列选中该框。解决此问题的一种方法是在检索到数据源后向数据源添加一个布尔列,然后根据文本字段为每一行手动设置此字段。

我希望这是有道理的。

【讨论】:

    【解决方案4】:

    解决方案(回答我自己)。这是我的模板字段(仅显示相关代码)

    <asp:TemplateField HeaderText="Image" >
    <HeaderTemplate> </HeaderTemplate> 
    <ItemTemplate>        // all other templates removed
    <asp:Image ImageUrl="Images/checkmark_s.png" runat="server" Visible=<%#  showImageIfCalled((string)Eval("isCalled")) %> />
    </ItemTemplate>
    </asp:TemplateField>
    

    这是返回真或假的函数

    protected bool showImageIfCalled(string val)
        {
            if (val == "called")
               return true;
            else
                return false;
        }
    

    请注意,我没有在 Visible = field 前面使用“单引号”或“双引号”

    【讨论】:

      猜你喜欢
      • 2015-08-14
      • 1970-01-01
      • 1970-01-01
      • 2017-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-29
      • 1970-01-01
      相关资源
      最近更新 更多