CommandName 在源代码中不可见
CommandName not visible in source code
我有这个代码
<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 事件并修复了这个问题。
原因是因为您试图从 DataList
而不是 LinkButton
获取 CommandName
。如果您执行以下操作,您的代码将起作用:
protected void btnSample_Click(object sender, EventArgs e)
{
// Instantiate:
var command = ((LinkButton)sender).CommandName;
// Do additional logic.
}
我相信您的意图是对 Click 事件实际执行一些操作。如果这不是您的情况,则您需要 FindControl
对 DataList
中的事件进行实例化,然后实例化 LinkButton
以获得 CommandName
。希望这能为您指明正确的方向。
我会在 DataList
内做一个示例,但如果没有确切的实施和其他信息,我将无法做到。和上面类似,只是在当前控件中分配Control
。
我有这个代码
<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 事件并修复了这个问题。
原因是因为您试图从 DataList
而不是 LinkButton
获取 CommandName
。如果您执行以下操作,您的代码将起作用:
protected void btnSample_Click(object sender, EventArgs e)
{
// Instantiate:
var command = ((LinkButton)sender).CommandName;
// Do additional logic.
}
我相信您的意图是对 Click 事件实际执行一些操作。如果这不是您的情况,则您需要 FindControl
对 DataList
中的事件进行实例化,然后实例化 LinkButton
以获得 CommandName
。希望这能为您指明正确的方向。
我会在 DataList
内做一个示例,但如果没有确切的实施和其他信息,我将无法做到。和上面类似,只是在当前控件中分配Control
。