2014-12-02 67 views
0

我一直试图将标题列从2合并到1,但示例中,我已经尝试过用这样的东西 GridView.Controls[0].Controls.AddAt(0, oGridViewRow);这个问题和浮动的例子只是添加1列,并将其添加到旧列的顶部,而不是合并它。所以我想实际合并1列和其余的列仍然是相同的。这里是我想要合并的GridView列的画面:在gridview中合并列标题

GridView

我要合并2“动作”列标题为1.所以下面的操作栏,会有一个编辑和删除。

哦,我差点忘了,这里是处理行动列在GridView代码:

<asp:CommandField ShowEditButton="true" HeaderText="Action"/> 

     <asp:TemplateField> 
      <ItemTemplate> 
       <asp:LinkButton ID="linkDelete" runat="server" 
        CommandArgument = '<%# Eval("XXX")%>' 
        OnClientClick = "return confirm('Do you want to delete?')" 
        Text = "Delete" OnClick = "DeleteDetail"></asp:LinkButton> 
      </ItemTemplate> 
     </asp:TemplateField> 

回答

2

虽然我严格对硬编码,这就是我,你可以在GridView控件的“的RowDataBound”事件这样写: -

if (e.Row.RowType == DataControlRowType.Header) 
{ 
     e.Row.Cells[3].ColumnSpan = 2; 
     e.Row.Cells[4].Visible = false; 
     e.Row.Cells[3].Text = "Action"; 
} 

在这里,你可以根据需要改变的细胞指数你的gridview设计。

+0

是的,谢谢兄弟,终于有效。我只需要改变索引并使我想变成隐形的列。 – Nicolas 2014-12-02 09:16:33

1

您可以使用模板自定义列报头和数据看起来怎么样 下面是一个非常简单的例子,应该表现出期望的结果 但你需要在hadnling编辑工作和删除操作自己的路

<asp:GridView ID="GridView1" runat="server">    
     <Columns> 
      <asp:TemplateField> 
       <HeaderTemplate> 
        <div> Action </div> 
       </HeaderTemplate> 
       <ItemTemplate> 
        <a href="#">Edit</a> | <a href="#">Delete</a> 
       </ItemTemplate> 
      </asp:TemplateField> 
     </Columns> 
    </asp:GridView> 

正如你看到的,我的想法是不是合并两列的标题。相反,我将两列的数据放在单一标题下的单个列中。我认为它达到了同样的结果。

+0

是啊兄弟,我已经处理了编辑和删除操作,但是没有使用href,而是使用了已经提供的linkBut​​ton和showEditButton。再次检查问题以查看代码,我已经编辑它。而对于href之一,我不想使用它,因为它非常脆弱。无论如何感谢 – Nicolas 2014-12-02 09:03:33

+0

对不起,我并不是指在特定的情况下使用href,这就是为什么我说“非常简化的例子”。我只是提供了模板作为解决方案的想法。所以,你可以肯定地用LinkBut​​ton替换它们。 @ Rahul-Singh的解决方案很好,但是正如他所说的那样,它是硬编码的,每次更改列数时都需要更新索引 – Gouda 2014-12-02 10:26:25

+0

是的,对于硬编码来说这并不好,特别是如果列动态更改,而你的方法只使用1列以下,如果我从一开始就使用它,那就简单了。 – Nicolas 2014-12-03 07:56:46