如何在复选框的单击事件上更改网格视图的单元格值

时间:2014-02-02 06:33:47

标签: c# asp.net

我正在尝试更改复选框点击事件的单元格值

我的网格视图标记代码如下:

<asp:GridView ID="gvDetails" runat="server" AutoGenerateColumns="False"
AutoGenerateEditButton="True" Height="144px" 
Width="397px"
 onrowcommand="gvDetails_RowCommand" 
 onrowcancelingedit="gvDetails_RowCancelingEdit1" 
 onrowediting="gvDetails_RowEditing" onrowupdating="gvDetails_RowUpdating" 
 onrowdatabound="gvDetails_RowDataBound">
 <HeaderStyle BackColor="#df5015" Font-Bold="true" ForeColor="White" />
 <Columns>

 <asp:TemplateField HeaderText="Call">
 <ItemTemplate>
   <asp:CheckBox ID="chkCall" runat="server" AutoPostBack="true"  OnCheckedChanged="chkCall_CheckedChanged" />
  </ItemTemplate>
  <HeaderStyle BackColor="#0033CC" />
  </asp:TemplateField>

 <asp:BoundField  HeaderText="caLLTIME" >
 <HeaderStyle BackColor="#0033CC" />
 </asp:BoundField>

 </Columns>
 </asp:GridView>

我的C#编码:

protected void chkCall_CheckedChanged(object sender, EventArgs e)
{
    GridViewRow row = (GridViewRow)((Button)sender).NamingContainer;      
    row.Cells[2].Text = Convert.ToString(DateTime.Now);
}

我收到此错误:

Unable to cast object of type 'System.Web.UI.WebControls.CheckBox' to
type 'System.Web.UI.WebControls.Button' 

在第一行。

请帮帮我

1 个答案:

答案 0 :(得分:1)

由于发件人为CheckBox,您可以将其投放到CheckBox,然后获取NamingContainer

 GridViewRow row = (GridViewRow)((CheckBox)sender).NamingContainer;