怎么触发DataGrid模板列中控件的事件

在DataGrid模板列中的按钮可以触发ItemCommand事件但是怎么触发其他事件?(比如放置DropDownList怎么触发SelectedIndexChange事件?……)
在模板列中增加一个DropDownList

<asp:TemplateColumn HeaderText="学院">
      <ItemTemplate>
       <asp:DropDownList ID="dep2" Runat="server" AutoPostBack="True" OnSelectedIndexChanged="DropDownList2_SelectedIndexChanged"></asp:DropDownList>
      </ItemTemplate>
      <EditItemTemplate>
       <asp:DropDownList ID="dep" Runat="server"></asp:DropDownList>
      </EditItemTemplate>
</asp:TemplateColumn>

在前台直接加上事件DropDownList2_SelectedIndexChanged

然后在后台添加事件就可以了

protected void DropDownList2_SelectedIndexChanged(object sender, System.EventArgs e)
  {
   Response.Write(((DropDownList)sender).SelectedItem);
  }

注意,事件不能是private的,这里的sender就是这个下拉框,类型转换一下就能使用了

说了怎么在触发DataGrid模板列中控件自己的事件,怎么知道点击的是哪一行?要通过这个来获取中的信息。
那一行DataGridItem是

((DataGridItem)((DropDownList)sender).Parent)

吗?不是,因为((DataGridItem)((CheckBox)sender).Parent)是TableCell
其实应该是

((DataGridItem)((DropDownList)sender).Parent.Parent)

接下来你想怎么就怎么了。

输出行号:

Response.Write(((DataGridItem)((DropDownList)sender).Parent.Parent).ItemIndex);

输出值:

Response.Write(((DataGridItem)((DropDownList)sender).Parent.Parent).Cells[ 0 ].Text);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值