我已經聲明創建了一個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嗎?標籤中的命令屬性是否仍然存在? –