如何以编程方式在gridview中添加更复杂的列

时间:2014-02-18 13:08:05

标签: c# asp.net gridview

我有以下columg:

<Columns>
<asp:TemplateField HeaderText="Delete">
    <ItemTemplate>
        <asp:ImageButton ID="imbDelete" runat="server" ImageUrl="~/images/icon_Delete.png"
            OnClientClick="return confirm('Delete attachment?');" CommandName="Delete"
            CommandArgument='<%# Eval("Name") %>' />
    </ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Path" HeaderText="Path" ReadOnly="True" Visible="False" />
<asp:BoundField DataField="Name" HeaderText="Name" ReadOnly="True" />

我必须使用C#以编程方式在我的代码中插入。有人可以帮忙吗?我不知道如何在TemplateField中插入ImageButton,甚至不能一次插入所有这些数据。

2 个答案:

答案 0 :(得分:2)

我建议不要动态插入它,而是建议在其上设置Visible="False",并在代码中将其设置为true,以便显示它。那么管理会容易得多;例如,在RowDataBound事件处理程序中,您可以执行以下操作:

GridView_RowDataBound(..)
{
    var deleteButton = e.Row[0].FindControl("imbDelete");
    deleteButton.Visible = (some condition);
}

答案 1 :(得分:0)

我曾经使用asp按钮并使用CssClass来拍照。

 <Columns>
<asp:TemplateField HeaderText="Delete">
    <ItemTemplate>
        <asp:Button ID="imbDelete" runat="server" CssClass="buttonDelete"
            OnClientClick="return confirm('Delete attachment?');" CommandName="Delete"
            CommandArgument='<%# Eval("Name") %>' />
    </ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Path" HeaderText="Path" ReadOnly="True" Visible="False" />
<asp:BoundField DataField="Name" HeaderText="Name" ReadOnly="True" />

然后在你的CssClass中:

.buttonDelete
{
border:none;
background:url(../../images/buttonDelete.png) no-repeat;
}

如果你想要你可以像这样改变悬停图片:

.buttonDelete:hover
{
background:url(../../images/buttonDelete-hover.png) no-repeat;
}