我是靠谱客的博主 舒服自行车,最近开发中收集的这篇文章主要介绍GridView中的RowCommand事件中的取值问题GridView的RowCommand事件中获取该行DataKey值(转),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

需求现象:在RowCommand事件中获取该行DataKey值,以便编辑改行相应的数据;

解决方案:
1)模板列中的LinkButton ,需要绑定其CommandArgument=’<%# Bind(“ID”) %>’,然后在RowCommand事件中获取
绑定:
<asp:TemplateField >

<asp:LinkButton ID=“deleteSelect” Text=“删除选中” CommandName=“DeleteSelect” runat=“server”></asp:LinkButton>


<asp:LinkButton ID=“delete” Text=“删除” CommandName=“DeleteRow” CommandArgument=’<%# Bind(“ID”) %>’ runat=“server” ></asp:LinkButton>

</asp:TemplateField>
获取:
string ID = e.CommandArgument.ToString();

2)非模板列的ButtonField,不需要绑定其CommandArgument,就可以获取
绑定:
<asp:ButtonField CommandName=“showprodorder” HeaderText=“查看” Text=“删除” >

</asp:ButtonField>
获取:
int rowNumber = Convert.ToInt32(e.CommandArgument);
string ID = dg.DataKeys[rowNumber].Value.ToString();
先看前台代码

<asp:GridView runat=“server” ID=“GridView1” CssClass=“Result_tab” AutoGenerateColumns=“False” DataSourceID=“SqlDataSource1” DataKeyNames=“id” OnRowCommand=“GridView1_RowCommand”>

<asp:TemplateField HeaderText=“有效时间” SortExpression=“audit”>

<asp:TextBox ID=“TextBox8” runat=“server” Text=’<%# Bind(“audit”) %>’></asp:TextBox>


<asp:TextBox ID=“TextBox9” runat=“server” Text=’<%# Bind(“effective_time”) %>’ Width=“50” ></asp:TextBox>

</asp:TemplateField>

             <asp:TemplateField HeaderText="审批">
                                <EditItemTemplate>
                                    <asp:TextBox ID="TextBox10" runat="server" Text=''></asp:TextBox>
                                </EditItemTemplate>
                                <ItemTemplate>
                                    <asp:Button runat="server" ID="orderManage" Text="通过" CommandName="Modify" CommandArgument='<%# Bind("id") %>' />
                                    <asp:Button runat="server" ID="Button3" Text="不通过" CommandName="Forbid" CommandArgument='<%# Bind("id") %>' />
                                </ItemTemplate>
                            </asp:TemplateField>
              <asp:TemplateField HeaderText="审批备注" SortExpression="audit">
  要在 GridView1_RowCommand 方法中取TextBox9的值,无法直接取。

这个时候要用下面的办法

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
string workid = e.CommandArgument.ToString();
string name = e.CommandName.ToString();
string strUpdate = “”;
string strRemark = “”;
string strEffective = “”;

    GridViewRow row = ((Control)e.CommandSource).BindingContainer as GridViewRow;
    //取有效时间
    TextBox txtEffectiveTime = (TextBox)row.FindControl("TextBox9");
    strEffective = (string.IsNullOrEmpty(txtEffectiveTime.Text) != true) ? txtEffectiveTime.Text.Trim() : "";
    //取审备注
    TextBox txtNotion = (TextBox)row.FindControl("TextBox12");
    strRemark = (string.IsNullOrEmpty(txtNotion.Text) != true) ? txtNotion.Text.Trim() : "";

}
  最有效的就是这段

GridViewRow row = ((Control)e.CommandSource).BindingContainer as GridViewRow;

//如果要去id为TextBox9的值

TextBox txtEffectiveTime = (TextBox)row.FindControl(“TextBox9”);

最后

以上就是舒服自行车为你收集整理的GridView中的RowCommand事件中的取值问题GridView的RowCommand事件中获取该行DataKey值(转)的全部内容,希望文章能够帮你解决GridView中的RowCommand事件中的取值问题GridView的RowCommand事件中获取该行DataKey值(转)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(79)

评论列表共有 0 条评论

立即
投稿
返回
顶部