CommandName在源代码中不可见

本文关键字:源代码 CommandName | 更新日期: 2023-09-27 18:13:01

我有这样的代码

<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
    }           
}

事件正在触发。
但是当我调试时,LinkButton1的CommandName在源代码中不可见。
因此,if语句不起作用。

有什么想法吗?

编辑:

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

CommandName在源代码中不可见

原因是因为您试图从DataList而不是LinkButton中获得CommandName。如果您执行以下操作,您的代码将正常工作:

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

我相信你的意图是在Click Event上做一些事情。如果不是这种情况,则需要对DataList中的事件执行FindControl,然后实例化LinkButton以获得CommandName。希望这能给你指明正确的方向。

我会在DataList内做一个样本,但如果没有确切的实现和额外的信息,我将无法。它与上面的类似,只是在当前控件中分配Control