日期:2014-05-18  浏览次数:20753 次

DataGrid中Button点击变色问题
前台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;
  }
  }
}

这样做的话当点击第二个按钮时 第一个按钮不能恢复原色。
如何能做到 当点击下一个按钮时 上一个按钮恢复原色?
请指点一下,最好能给你代码或者例子。

------解决方案--------------------
怎么最近那么多问此类问题的--
把你的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更方便