在Datagrid中加入一个模板列,请问如何才能触发它的事件,请各位指教

解决方案 »

  1.   

    你的模板列是一个控件,它有一个控件名字,由这个名字控制在DataGrid的ItemCommand事件触发,写法如下
    if(e.CommandName=="控件名")
    {
    //要执行的操作
    }ItemCommand事件知道怎么生成吧,在DataGrid属性中,上面有个闪电符号,点那个,找到相应地事件,双击后,生成相应的事件,在那里写就可以了
      

  2.   

    如果你的有一个模板列有一个删除按钮列,LinkButton类型,那么你的DataGrid的ItemCreate触发事件里这样写:
    LinkButton lb = (LinkButton)e.Item.FindControl("ID");
    //ID为DataGrid每一行删除按钮列的LinkButton的ID
    lb.Attributes.Add("onclick","return confirm('真的要删除此行吗?');");
      

  3.   

    private void DataGrid1_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    LinkButton lb = e.Item.FindControl("lbID");//lbID为删除列的ID
    lb.Attributes.Add("onclick",return confirm('真的要删除此行吗?');");
    }
      

  4.   

    加入LinkButton在模板編輯中
    LinkButton lbn = (LinkButton)e.Item.FindControl("i");
    //其中i为DataGrid每行item的LinkButton的編號
      

  5.   

    看你放到模板列内的是什么控件了
    button  linkbutton imagebutton 都可以将事件冒泡到DataGrid的ItemCommand内处理 其他的就要自己实现了
      

  6.   

    请问楼上各位大侠,e.Item.FindControl("ID");
    这里ID怎么确认???
    模板列如果放一个<asp:LinkButton ID="del" Runat="server" CommandName="delete">删除</asp:LinkButton>
    那么放入DataGrid后,如果有十条记录,那就会出现十个这样的LinkButton ,请问如何确认各行的ID?????
    如果ID不准确,再执行下面的就报错“未将对象引用设置到对象的实例”
      

  7.   

    请问楼上各位大侠,e.Item.FindControl("ID");
    这里ID怎么确认???
    模板列如果放一个<asp:LinkButton ID="del" Runat="server" CommandName="delete">删除</asp:LinkButton>
    那么放入DataGrid后,如果有十条记录,那就会出现十个这样的LinkButton ,请问如何确认各行的ID?????
    如果ID不准确,再执行下面的就报错“未将对象引用设置到对象的实例”----------------------------
    e.Item.FindControl("delete");
      

  8.   

    <asp:LinkButton ID="del" Runat="server" CommandName="delete">删除</asp:LinkButton>private void DataGrid1_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    LinkButton lb=(LinkButton)e.Item.FindControl("delete");
    lb.Attributes.Add("onclick","return confirm('真的要删除此行吗?');");
    }报错“未将对象引用设置到对象的实例”
      

  9.   

    <asp:LinkButton ID="del" Runat="server" CommandName="delete">删除</asp:LinkButton>private void DataGrid1_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    LinkButton lb=(LinkButton)e.Item.FindControl("delete");
    lb.Attributes.Add("onclick","return confirm('真的要删除此行吗?');");
    }报错“未将对象引用设置到对象的实例”
    -----------------------------
    if(e.Item.FindControl("delete") != null)
    {
    LinkButton lb=(LinkButton)e.Item.FindControl("delete");
    lb.Attributes.Add("onclick","return confirm('真的要删除此行吗?');");
    }
      

  10.   

    if(e.Item.FindControl("delete") != null)
    加这个不报错,但是没解决问题呀
    e.Item.FindControl还是找不到控件del是ID,delete是CommandName
    ID被循环后,每个控件的ID会被。NET改变,只有CommandName不变
    e.Item.FindControl里的参数到底怎么写呢?
      

  11.   

    if(e.CommandName)
    {
    case: "delete"
       //代码区
    break;
    }
      

  12.   

    if(e.Item.FindControl("delete") != null)
    加这个不报错,但是没解决问题呀
    e.Item.FindControl还是找不到控件del是ID,delete是CommandName
    ID被循环后,每个控件的ID会被。NET改变,只有CommandName不变
    e.Item.FindControl里的参数到底怎么写呢?
    ----------------
    if(e.Item.FindControl("del") != null)\\你在写代码的时候看程序提示阿
    ps: 为什么不自己发帖,在人家帖子里问问题呢,占人家便宜阿!
      

  13.   

    另外送楼主一个好东西,共同学习
    http://www.mikecat.net/blogview.asp?logID=557
    这里有好多小源码,可以学习的.
      

  14.   

    可以参考这个答案的
    OnClientClick="javascript:return confirm('真的要删除吗?');" Text="删除" CommandArgument='<%# Eval("TID", "{0}") %>' CommandName="MyBtnClicked"
      LinkButton lnkb = (LinkButton)sender;
      string ClassId=lnkb.CommandArgument.ToString();
    针对LinkButton 这个事件
      

  15.   

    <asp:TemplateColumn>
    <ItemTemplate>
    <asp:LinkButton ID="LinkButtmp1" Runat="server" OnClick="LinkButtmp1_Click">事件</asp:LinkButton>
    </ItemTemplate>
    </asp:TemplateColumn>
      

  16.   

    单击选中DataGrid 在属性窗体里选择事件 在哪里写都可以