我已经声明创建了一个LinqDataSource和DataList并将它们绑定在标记中。我创建了一个ItemTemplate和Edit Template。ASP.Net DataList问题
我已经绑定了DataLists oneditcommand和oncancelcommand方法在后面的代码中。
<asp:DataList ID="MyDataList" runat="server" DataSourceID="LinqDataSource1" RepeatDirection="Horizontal"
Font-Bold="False" Font-Italic="False" Font-Overline="False" Font-Strikeout="False"
Font-Underline="False" HorizontalAlign="Center" RepeatColumns="4"
oneditcommand="MyDataList_EditCommand"
oncancelcommand="MyDataList_CancelCommand"
>
<ItemTemplate>
<div style="margin: 5px;">
<asp:LinkButton Text="Edit" CommandName="Edit" style="float:right" runat="server" />
// Other markup
</div>
</ItemTemplate>
当我点击在ItemTemplate LinkButton的,它运行下面的代码:
protected void DataList_EditCommand(object source, DataListCommandEventArgs e)
{
MyDataList.EditItemIndex = e.Item.ItemIndex;
MyDataList.DataBind();
}
这工作得很好,并把所选择的项目在DataList控件进入编辑模式。 编辑模板:
<EditItemTemplate>
<div style="margin: 5px;">
<asp:LinkButton Text="Cancel" style="float:right"
runat="server" CommandName="cancel" CausesValidation="false"/>
//other markup
</div>
</EditItemTemplate>
当我点击编辑模板中的取消按钮,它不火的代码的方法背后(断点没有被击中)。
应该取消从来没有得到的运行时运行的代码,所以我不能退出编辑模式返回到正常读模式:
protected void MyDataList_CancelCommand(object source, DataListCommandEventArgs e)
{
PhotoDataList.EditItemIndex = -1;
PhotoDataList.DataBind();
}
谁能想到的原因?
---- UPDATE
看来,这只不过是在DataList控件的事件不工作的第二次烧制,因为我已经知道绑定到ItemCommand事件,并打算拦截DataListCommandEventArgs.CommandName属性,并根据它做些事情。如果单击编辑链接按钮,ItemCommand方法会触发(根本没有任何代码体),但第二次单击编辑链接按钮时,ItemCommand方法不会被击中。
嗨本 - 任何在浏览器上F F Fiddler的机会都会揭示这里发生的事情吗? –
你看过第一个命令被触发后生成的HTML吗?标签中的命令属性是否仍然存在? –