protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
    {
        LinkButton lnkDel;
        if (e.Row.RowIndex >=0)
        {
            lnkDel = (LinkButton)e.Row.Cells[8].Controls[0];
            lnkDel.Attributes.Add("onclick", "return confirm('确定要删除该记录吗?')");
        }
    }
Cells[8]肯定没错,对应的代码是:                        <asp:CommandField HeaderText="删除" ShowDeleteButton="True">
                            <ItemStyle Width="50px" />
                        </asp:CommandField>
跟踪发现Controls里面的控件数为0,晕的一米,好像原来在3.5里面是正常的。

解决方案 »

  1. 使用TemplateField就可以使用 FindControl去找控件,这可靠的多
      

  2. 这个写前面就可以了
    OnClientClick="return confirm('确定要删除该记录吗?')"
      

  3. 用gridview的onrowcommand事件。
    直接在gridview上写OnClientClick就可以了:<asp:GridView ID="gvReport" runat="server" DataKeyNames="ID" AllowSorting="True" AutoGenerateColumns="False" onrowcommand="gvReport_RowCommand" PageSize="10"><Columns>
      <asp:TemplateField HeaderText="操作" HeaderStyle-Width="150px">
        <ItemTemplate> 
    <asp:LinkButton ID="lbtDel" runat="server" OnClientClick="return confirm('确定删除吗?');" CommandName="gvReport_Del" CommandArgument='<%#Eval("ID") %>' Text="删除"></asp:LinkButton>
        </ItemTemplate>
      </asp:TemplateField> 
    </Columns> 
    </asp:GridView> 后台cs:
        //gridview事件
        protected void gvReport_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            //删除
            if (e.CommandName == "gvReport_Del")
            {
                   //删除操作
            }
        }
      

  4. 没有指定ID吧,在数据集里设置一下ID就行了
      

类似问题 »