(sender as ImageButton).NamingContainer as GridViewRow

在gridview2中有一个模板列,其中包含一个imagebutton,源码如下:
<asp:GridView ID="GridView2" runat="server" BorderStyle="None" CellPadding="3" AutoGenerateColumns="False" width="810px">
        <RowStyle ForeColor="Black" />
        <HeaderStyle Font-Bold="True" ForeColor="White" Height="24" HorizontalAlign="Center" VerticalAlign="Middle" CssClass="Freezing"/>
        <Columns>
            <asp:TemplateField HeaderText="删除" ItemStyle-Width="30" ItemStyle-HorizontalAlign="Center">
            <ItemTemplate>
                <asp:ImageButton ID="ImageButton1" runat="server" OnClick="ImageButton1_Click" ImageUrl="~/images/gif/delete.gif"/>
            </ItemTemplate>
            </asp:TemplateField>
            <asp:BoundField DataField="m_code" HeaderText="物料代码">
                <ItemStyle HorizontalAlign="center" Width="100px" Height="18px"  />
            </asp:BoundField> 
            <asp:BoundField DataField="m_name" HeaderText="资材名称">
                <ItemStyle HorizontalAlign="left" Width="150px" Height="18px"  />
            </asp:BoundField> 
            <asp:BoundField DataField="m_type" HeaderText="型号规格">
                <ItemStyle HorizontalAlign="left" Width="200px"  Height="18px" />
            </asp:BoundField> 
            <asp:BoundField DataField="m_unit" HeaderText="单位">
                <ItemStyle HorizontalAlign="center" Width="40px" Height="18px" />
            </asp:BoundField>
                        </Columns>
    </asp:GridView>

imagebutton1的动作如下:
    protected void ImageButton1_Click(object sender, EventArgs e)
    {
        string kkk = this.GSN.Text;
        for (int i = 0; i <= GridView2.Rows.Count - 1; i++)
        {
            ImageButton Ibutton = (ImageButton)GridView2.Rows[i].FindControl("ImageButton1");
            string kk = GridView2.DataKeys[i].Value.ToString();

            if (Ibutton.Click == true)
            {
            kkk = kkk.Remove(kkk.IndexOf(kk) - 1, kk.Length + 1);
            }
        }
        this.GSN.Text = kkk;
    }

现在的问题是如何判断Ibutton是否被点击?我写的是不行的。

 

 

 

GridView添加RowCommand事件
<asp:GridView ID="GridView2" runat="server"  OnRowCommand="GridView2_RowCommand"

<asp:ImageButton ID="ImageButton1" runat="server" CommandName="delete" CommandArgument=' <%# Eval("m_code") %>' OnClick="ImageButton1_Click" ImageUrl="~/images/gif/delete.gif"/>

C# code
   
   
protected void GridView2_RowCommand( object sender, GridViewCommandEventArgs e) { if (e.CommandName.ToLower() == " delete " ) // 点击了ImageButton1 { string id = e.CommandArgument.ToString(); // 物料物料代码 } }
 
 
ImageButton1_Click事件去掉
<asp:ImageButton ID="ImageButton1" runat="server" CommandName="delete" CommandArgument=' <%# Eval("m_code") %>'  ImageUrl="~/images/gif/delete.gif"/>
protected void ImageButton1_Click(object sender, EventArgs e) { GridViewRow gvr = (sender as ImageButton).NamingContainer as GridViewRow; if(gvr != null) { Response.Write("点击的行索引是:" + gvr.RowIndex); } }
protected void ImageButton1_Click(object sender, EventArgs e) { string kkk = this.GSN.Text; for (int i = 0; i <= GridView2.Rows.Count - 1; i++) { ImageButton Ibutton = (ImageButton)GridView2.Rows[i].FindControl("ImageButton1"); string kk = GridView2.DataKeys[i].Value.ToString(); if (ibutton == sender)//关键这一句 { kkk = kkk.Remove(kkk.IndexOf(kk) - 1, kk.Length + 1); } } this.GSN.Text = kkk; }
protected void ImageButton1_Click(object sender, EventArgs e)
用 (sender as ImageButton)就是你点击的那个按钮,在数据绑定时给这个按钮加点记号就能分出来了。
或者用 (((sender as ImageButton).Parent.Parent) as GridViewRow).DataItemIndex 能取到点击按钮所在的行号。
加入一列也是包含图象按钮的列,
转化为模板列
假如关键列是第一行,rowcomand事件,获取到关键字段的值并判断按纽的名字分别执行
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        //获取到操作的行索引
        int index = Convert.ToInt32(e.CommandArgument);
     //找到操作的那一行
        GridViewRow selectRow = GridView1.Rows[index];

        TableCell SelectMemberID = selectRow.Cells[0];
        //可以根据按钮的名称分别执行程序
        switch (e.CommandName)
        {
            case "addsalary":

                myGetDefault.AddMemberSalary(SelectMemberID.Text);

                break;

            case "lowsalary":

                myGetDefault.LowMemberSalary(SelectMemberID.Text);

                break;

            default:

                break;


        }

        GetData();

    }
if (ibutton == sender)

要的就是这个效果,哈哈!
多谢!!!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值