2011-08-06 48 views
0

我有一个gridview,其中包含列名称“历史”,其中有加号(+)图像按钮。点击加号图像按钮会在下面添加新行。插入一个新行应该只将Plus image按钮的图像更改为该特定父行的Minus( - )图像按钮。其余的行应该有加号图像按钮。如何在运行时更改gridview单元格的图像?

Q1。如何知道所选行的行索引,以便可以更改图像?其次,如果我点击减号图像按钮,应该重置为加图像按钮,并且不应该看到添加的子行。 Q2302。如何将图像更改回Plus Image按钮?

我已经在gridview模板字段中添加了加号图像按钮。因此,当网格加载时,Plus图像可见。

请指教!

谢谢!

回答

0

首先添加具有图像按钮模板列在里面:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="Srl" 
    DataSourceID="EntityDataSource1" OnRowCommand="GridView1_RowCommand" OnRowDataBound="GridView1_RowDataBound"> 
    <Columns> 
     <asp:TemplateField> 
      <ItemTemplate> 
       <asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="~/Images/Left.gif" CommandName="Add" /> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <%--Other columns--%> 
    </Columns> 
</asp:GridView> 

然后在GridView1_RowDataBound事件处理程序设置按钮CommandArgument划船指数:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      ImageButton button = (ImageButton)e.Row.FindControl("ImageButton1"); 
      button.CommandArgument = e.Row.RowIndex.ToString(); 
     } 
    } 

终于在GridView1_RowCommand事件处理程序切换ImageButton imageUrl和CommandName,并执行任何您想要添加和删除行的操作:

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) 
    { 
     int index = Convert.ToInt32(e.CommandArgument); 
     GridViewRow selectedRow = GridView1.Rows[index]; 
     ImageButton button = (ImageButton)e.CommandSource; 
     switch (e.CommandName) 
     { 
      case "Add": 
       // Use selectedRow to add your rows  
       button.ImageUrl = "~/images/down.gif"; 
       button.CommandName = "Remove"; 
       break; 
      case "Remove": 
       // Use selectedRow to remove your rows 
       button.ImageUrl = "~/images/left.gif"; 
       button.CommandName = "Add"; 
       break; 
     } 
    } 
相关问题