【问题标题】:CommandName not visible in source codeCommandName 在源代码中不可见
【发布时间】:2015-12-13 16:22:10
【问题描述】:

我有这个代码

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <asp:DataList ID="DataList1" runat="server" OnItemCommand="DataList1_ItemCommand">
            <ItemTemplate>
                <asp:LinkButton ID="LinkButton1" runat="server" CommandName="Command1">
                    <img src="../images/image1.png" alt="" />
                </asp:LinkButton>                                         
            </ItemTemplate>
        </asp:DataList>
    </ContentTemplate>
</asp:UpdatePanel>

还有这段代码

protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
{
    if (e.CommandName == "Command1")
    {      
        // Never drops here
    }           
}

事件正在被触发。
但是当我调试时,LinkBut​​ton1 的 CommandName 在源代码中不可见。
所以,if 语句不起作用。

有什么想法吗?

编辑:

我意识到我的页面存在属于这种情况的另一个错误。
然后我使用了 GridView 而不是 DataList 并使用了 GridView 的 RowCommand 事件并修复了这个问题。

【问题讨论】:

    标签: c# asp.net events command datalist


    【解决方案1】:

    原因是因为您试图从DataList 而不是LinkButton 获取CommandName。如果您执行以下操作,您的代码将起作用:

    protected void btnSample_Click(object sender, EventArgs e)
    {
         // Instantiate:
         var command = ((LinkButton)sender).CommandName;
    
         // Do additional logic.
    }
    

    我相信您的意图是在 Click 事件上实际执行某些操作。如果这不是您的情况,您需要在您的DataList 中的一个事件上FindControl,然后实例化LinkButton 以获得CommandName。希望这会为您指明正确的方向。

    我会在DataList 中做一个示例,但如果没有确切的实现和其他信息,我将无法做到。与上面类似,只是在当前控件中分配Control

    【讨论】:

      猜你喜欢
      • 2017-10-30
      • 2020-02-16
      • 1970-01-01
      • 1970-01-01
      • 2020-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多