处理在DataGrid中的DropDownList的事件
DropDownList没有CommandName属性,所以不能用ItemCommand事件,不过你可以这样试试:
在DataGrid的模板列中加入的DropDownList控件
<asp:DropDownList runat="server" id="ddl" AutoPostBack="True" OnSelectedIndexChanged="ddl_SelectedIndexChanged" />
然后你在.aspx.cs中加入一个函数
protected void ddl_SelectedIndexChanged(object sender, System.EventArgs e) //一定要声明成protected或者public,不能是private的。
{
  //在这里就可以加入其他代码
}3.1、在上面的事件中怎样得到本行其他Cell的值呢?
我们知道,DataGrid完全是一个Table结构的控件,DataGrid包含DataGridItem,每个DataGridItem又包含TableCell,那么,我们就可以在TableCell的某个控件中,利用控件的Parent来得到TableCell,再利用TableCell的Parent,就可以得到DataGridItem了。
protected void ddl_SelectedIndexChanged(object sender, System.EventArgs e) //一定要声明成protected或者public,不能是private的。
{
  DropDownList ddl = (DropDownList)sender;
  TableCell cell = (TableCell)ddl.Parent;
  DataGridItem item = (DataGridItem)cell.Parent;
  Response.Write(item.Cells[0].Text);
}

解决方案 »

  1.   

    http://www.mastercsharp.com/article.aspx?ArticleID=81&&TopicID=2 
    http://www.aspfree.com/aspnet/ConditionalDataGridItem.aspx 
    Datagrid and Checkboxes  http://aspalliance.com/das/datagridcheckbox.aspx
      

  2.   

    aspx页面:
    <asp:TemplateColumn>
       <HeaderTemplate>
         <asp:CheckBox Text="全部" ID="Checkbox1" Runat="server" AutoPostBack="true" OnCheckedChanged="Checkbox1_CheckedChanged" />
      </HeaderTemplate>
      <ItemTemplate>
         <asp:CheckBox ID="Checkbox2" Runat="server" />
      </ItemTemplate>
    </asp:TemplateColumn>cs文件:
    protected void Checkbox1_CheckedChanged(object sender, System.EventArgs e)
    {
       CheckBox myCheckBox = (CheckBox)sender;
       foreach(DataGridItem myItem in DataGrid1.Items)
      {
          if(myItem.ItemType == ListItemType.AlternatingItem || myItem.ItemType == ListItemType.Item)
          {
              if(myCheckBox.Checked == true)
              {
                   ((CheckBox)myItem.Cells[1].Controls[1]).Checked = true;
              }
              else
             {
                  ((CheckBox)myItem.Cells[1].Controls[1]).Checked = false;
             }
          }
       }
    }
      

  3.   

    首先你必须更改 <asp:CheckBox ID="Checkbox1" Runat="server" />
    为<asp:CheckBox ID="Checkbox1" Runat="server" AutoPostBack="True" OnCheckedChanged="Checkbox1_CheckedChanged" />
    只有加上 AutoPostBack="True" 属性才能在点击 CheckBox 时引发事件
    public void CheckBox1_CheckedChanged(object sender, System.EventArgs e)
    {
         CheckBox MyChkBox = (CheckBox)sender;
         if(MyChkBox.Checked ==true)
        {
             foreach(DataGridItem MyDataGridItem in DataGrid1.Items)
            {
            CheckBox  chkbox=(CheckBox)MyDataGridItem.FindControl("Checkbox2");
            chkbox.Checked =true;
            }    }
    }