2011-10-10 160 views
0

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

< - 编辑:包括图像区分复选框。

+1

我想我必须添加模板字段并在项目模板中添加一个图像链接。 –

+0

模板字段如此不受欢迎? –

回答

0

解决方案(我回答)。这是我的模板场(只显示培训相关的代码)

<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 =字段

0

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

但它听起来像要检查基于文本列的框。解决这个问题的一种方法是,在检索数据源后,向数据源添加一个布尔列,然后根据文本字段为每行手动设置此字段。

我希望这是有道理的。

1

插入模板列到你的网格视图的列:

<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"; 
} 

和完蛋了:)

+0

再次选中标记,而不是复选框:) :) –

+0

您可以使用此jquery插件将复选框转换为复选标记http:// jqidealforms。com/ –

+0

这对我很好,虽然“checked”是一个C#关键字,需要更改为其他内容。 – azpc

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> 

+0

对不起,问题是要求复选标记,而不是复选框。我在正确的轨道上,但需要从templatefield调用一个函数并传递字段的值,以便我可以从函数返回true或false。谢谢 –

相关问题