我有一个gridview,其中包含列名“History”,其中包含Plus(+)图像按钮。单击加号图像按钮会在下方添加新行。插入新行应该仅将Plus图像按钮的图像更改为该特定父行的减号( - )图像按钮。其余的行应该有加号图像按钮。
Q1。如何知道所选行的行索引,以便可以更改图像?
其次,如果我点击“减号”按钮,则应该重置为“加号”按钮,并且不应该看到添加的子行。
Q2。如何将图像更改回Plus Image按钮?
我在gridview模板字段中添加了Plus图像按钮。因此,当加载网格时,可以看到加号图像。
请指教!
谢谢!
答案 0 :(得分: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;
}
}