【问题标题】:Grid View Row Command Event Not Working网格视图行命令事件不起作用
【发布时间】:2014-04-15 10:16:22
【问题描述】:

我在 Wizard 控件中有 GridView 控件,并且在网格中有一个链接按钮,单击它会更改向导的活动索引。 我有三个 GridViewControls,我对这些网格的 RowCommand 使用相同的事件,但它不起作用,我尝试应用断点但它没有达到断点。 这是我的代码

w ID="GVUsers" runat="server" OnRowDataBound="GVUsers_RowDataBound" OnRowCommand="GVUsers_RowCommand" 
    OnRowDeleting="GVUsers_RowDeleting" AutoGenerateColumns="false" CssClass="table">
    <Columns>
            <asp:TemplateField HeaderText="Crimes" ItemStyle-HorizontalAlign="Left">
                <ItemTemplate>
                    <asp:Label ID="Username" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "Username") %>'></asp:Label>
                    <asp:Label ID="gender" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "Gender") %>'></asp:Label>                                   
                    <asp:Panel ID="divmsg" runat="server">
                        <asp:LinkButton
                            ID="btnlnkpg18" runat="server" Text="Click here" CommandName="pg18"></asp:LinkButton>
                    </asp:Panel>
                </ItemTemplate>
                 <asp:TemplateField>
                    <asp:TemplateField HeaderText="Delete" ItemStyle-HorizontalAlign="Left">
                <ItemTemplate>
                     <asp:LinkButton ID="delbtn" runat="server" Text="Delete" OnClientClick="return confirm('Do you really want to delete?');"
                        CommandName="delete" CommandArgument='<%#DataBinder.Eval(Container.DataItem, "UserId") %>'
                        CssClass="DeleteBtn"></asp:LinkButton>
                </ItemTemplate>
             <asp:TemplateField>
    </Columns>
</asp:GridView>

protected void GVUsers_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        DataRow row = ((DataRowView)e.Row.DataItem).Row;
        var lblgender= e.Row.FindControl("gender") as Label;
        var divlnk=e.Row.FindControl("divmsg") as Panel;

        if(lblgender.Text=="M")         
            divlink.Visible=true;               
        else
            divlink.Visible=false;          
    }
}

protected void GVUsers_RowCommand(Object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "delete")
    {              
            //Delete
    }

    if (e.CommandName == "pg18")
    {
            Wizard1.ActiveStepIndex = 16;
    }
}

我也尝试在 RowDataBound 中设置 CommandName 但没有运气,删除按钮也不起作用。 我是这样的数据绑定GridView

if(!Page.IsPostBack)
{
//Bind GridView
}

【问题讨论】:

  • 你的代码是否到达GVUsers_RowCommand事件?
  • 我尝试过使用 if(Page.IsPostBack) 并绑定网格,它可以正常工作

标签: c# asp.net


【解决方案1】:

赛义德,试试这个:

1) 将您的 RowDataBound 事件重命名为:

protected void temp()

2) 转到 aspx 页面并从 gridview 中删除 RowDataBound 属性。 3)在gridview仍然突出显示的情况下,单击设计视图。 4) 在属性中单击“事件”(闪电)。 4) 在 RowDatabound 框内双击以在 .cs 中创建事件处理程序 5) 在 .cs 内的 RowDatabound 中添加对 temp() 的引用; 6) 在 RowDatabound 中的 temp() 附近添加一个断点并运行您的代码。

查看它是否符合代码,如果符合则将所有内容从 test 复制到 RowDataBound 中。

【讨论】:

  • 您能否检查您的 aspx 页面是否在顶部引用它的代码,如下所示:CodeBehind="Page.aspx.cs"
  • 是的,我已经检查过了,它的引用,所有其他事件都在工作
猜你喜欢
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-06
相关资源
最近更新 更多