前台DataGrid中绑定Button
<asp:DataGrid ID="DGWFplans" runat="server" OnItemCommand="DGWFplans_ItemCommand">
       <Columns>  
<asp:TemplateColumn>
            <ItemTemplate>
                <asp:Button ID="Plan_name" runat="server" Text='<%# DataBinder.Eval(Container,"DataItem.name") %>'/>
            </ItemTemplate>
          </asp:TemplateColumn>
       </Columns>
</asp:DataGrid>后台DataGrid中的Button点击事件
protected void DGWFplans_ItemCommand(object source, DataGridCommandEventArgs e)
{
        if (e.Item.ItemIndex >= 0)
        {
            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {
                Button b = (Button)e.Item.FindControl("Plan_name");
b.BackColor = Color.Red;
            }
       }
} 这样做的话当点击第二个按钮时 第一个按钮不能恢复原色。
如何能做到 当点击下一个按钮时 上一个按钮恢复原色?
请指点一下,最好能给你代码或者例子。

解决方案 »

  1.   

    怎么最近那么多问此类问题的--
    把你的DGWFplans_ItemCommand去掉,给Button加个后台事件Plan_name_Click
    <asp:DataGrid ID="DGWFplans" runat="server" >
                    <Columns>
                        <asp:TemplateColumn>
                            <ItemTemplate>
                                <asp:Button ID="Plan_name" runat="server" OnClick="Plan_name_Click" Text='<%# DataBinder.Eval(Container,"DataItem.name")%>'/>
                            </ItemTemplate>
                        </asp:TemplateColumn>
                    </Columns>
                </asp:DataGrid> protected void Plan_name_Click(object sender, EventArgs e)
            {
                ((Button)sender).BackColor = System.Drawing.Color.Red;
                int rowindex = ((DataGridItem)(((Button)sender).Parent.Parent)).ItemIndex;
                for (int i = 0; i < this.DGWFplans.Items.Count; i++)
                {
                    if (i != rowindex)
                    {
                        ((Button)(this.DGWFplans.Items[i].FindControl("Plan_name"))).BackColor = System.Drawing.Color.White;
                    }
                }
            }当然上面只是后台的实现方法,其实用js更方便
      

  2.   

    把button.BackColor = Color.Red;放到循环里试试