GridView 中RowCommand 事件的好方法

1.在模板列中放一个Button和TextBox,TextBox用来存放产品名,将Button的CommandName设置为add并且在html中将他的CommandArguments属性和RowIndex进行绑定:

<asp:TemplateField HeaderText="产品名">
                    <ItemTemplate>
                        <asp:TextBox ID="TextBox3" runat="server" Text='<%# bind("id") %>'></asp:TextBox>
                        <asp:Button ID="Button3" runat="server" CommandName="deletee" Text="Button" CommandArgument='<%# DataBinder.Eval(Container,"keyid") %>' />
                    </ItemTemplate>
                </asp:TemplateField>

后台中输出模板列中TextBox中的值(保存的产品的id):

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "add")
        {
           
            int i = Convert.ToInt32(e.CommandArgument.ToString());

             // int i = ((GridViewRow)((Button)e.CommandSource).NamingContainer).RowIndex;//(该方法不需要html中的绑定,取id.刚刚看到的,加上来,好方法.......)


            TextBox tb = (TextBox)GridView1.Rows[i].FindControl("TextBox");
            
            string str = tb.Text.Trim();
            Response.Write(str);

         }

    }

注解:

int rowIndex = ((GridViewRow)((Button)e.CommandSource).NamingContainer).RowIndex;


e.CommandSource传的是按下去的Button,不过由于传回的是Object,就得自行转化Button,但我们想知道的是RowIndex,而Button是包含在GridViewRow內,所以通过NamingContainer传回目前的GridViewRow,得到是Control,所以需在转成GridViewRow后才能有RowIndex 属性。

原理是:将当前行索引和Button的commandargument绑定,用的时候只要取出当前行的索引即可,gridview的rowcommand事件和datalist的itemcommand事件相似

..........

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值