我有这段代码
<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事件并修复了它。
答案 0 :(得分:1)
原因是您试图从CommandName
而不是DataList
获取LinkButton
。如果您执行以下操作,您的代码将起作用:
protected void btnSample_Click(object sender, EventArgs e)
{
// Instantiate:
var command = ((LinkButton)sender).CommandName;
// Do additional logic.
}
我相信你的意图是在Click事件上真正做点什么。如果情况不是这样,则需要FindControl
对DataList
内的事件进行LinkButton
,然后实例化CommandName
以获取DataList
。希望这能指出你正确的方向。
我会在Control
内做一个示例,但没有确切的实现和其他信息,我将无法做到。它与上面类似,只是在当前控件中分配<table class="table table-bordered">
<thead>
<tr>
<th>Class</th>
<th>A</th>
<th>B</th>
<th>Total</th>
</tr>
</thead>
<tr>
<td>1</td>
<td>25</td>
<td>27</td>
<td>52</td>
</tr>
<tr>
<td>2</td>
<td>24</td>
<td>26</td>
<td>50</td>
</tr>
<tr>
<td colspan="3">Total</td>
<td>102</td>
</tr>
</table>
。