【问题标题】:ASP.net commandname won't fireASP.net 命令名不会触发
【发布时间】:2012-07-04 06:57:10
【问题描述】:

我在尝试使用参数 CommandName = "x" 触发 GridView 中的按钮时遇到问题,我尝试在 GridView1_RowCommand 事件中访问我的 "If" 但由于某种原因我不能,如果你能帮助我不胜感激。

这是我的 .aspx 部分

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
 <ContentTemplate>
    <asp:GridView ID="GridView1" runat="server" CellPadding="4" 
            EnableModelValidation="True" ForeColor="#333333" GridLines="None" 
            Height="193px" Width="968px" AllowPaging="True" AllowSorting="True" 
            AutoGenerateColumns="False" DataKeyNames="ID" 
            DataSourceID="SOURCE1" onrowcommand="GridView1_RowCommand">
            <AlternatingRowStyle BackColor="White" />
            <Columns>
            <asp:TemplateField ShowHeader="False">
                <ItemTemplate>
                    <asp:Button Text = "Seleccionar" runat="server" CommandName="X" CommandArgument='<%# Container.DataItemIndex %>' />
                </ItemTemplate>
            </asp:TemplateField>
                <asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False" 
                    ReadOnly="True" SortExpression="ID" />
                <asp:BoundField DataField="IDEmpresa" HeaderText="IDEmpresa" 
                    SortExpression="IDEmpresa" />
            </Columns>
            <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
        </asp:GridView> 
   </ContentTemplate>
</asp:UpdatePanel>

这是我的 C# 代码:

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "X")
    {
        int index = Convert.ToInt32(e.CommandArgument);
        GridViewRow row = GridView1.Rows[index];
        Label1.Text = "WOW It reached out";
    }
}

我按照 ASP.net 页面的说明进行操作,我对 .net 相当陌生(我不知道 UpdatePanel 是否与它有关)

【问题讨论】:

  • 你是否禁用了视图状态?

标签: asp.net events button command arguments


【解决方案1】:

做一个快速测试,你提供的代码可以工作,但我确实必须连接我自己的数据源。

您在这里缺少的是 Label1 在您的 UpdatePanel 之外,并且不会根据您在 UpdatePanel 中的本地化回发刷新。

关于 GridViews 和 UpdatePanels/Buttons 的注意事项。确保您没有在 Page_Load 期间手动绑定/重新绑定,如果您有执行此操作的代码,请在 if(!IsPostBack) { } 语句中执行此操作。

【讨论】:

  • 非常感谢您的建议,我不知道为什么,但在我的原始代码中,我在 RowCommand“int ID”或其他东西中有一个变量,它曾经打印在外部标签上(带有正确的 .ToString();) 每次 UpdatePanel 进行自己的回发,再次启动 PC 并且出于某种神秘原因它工作......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-17
  • 1970-01-01
  • 1970-01-01
  • 2022-08-19
  • 2021-09-20
  • 1970-01-01
相关资源
最近更新 更多