处理在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);
}
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);
}
http://www.aspfree.com/aspnet/ConditionalDataGridItem.aspx
Datagrid and Checkboxes http://aspalliance.com/das/datagridcheckbox.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;
}
}
}
}
为<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;
} }
}