2015-09-16 86 views
1

不可見我有這樣的代碼CommandName的源代碼

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

被觸發的事件。
但是,當我調試時,LinkBut​​ton1的CommandName在源代碼中不可見。
因此,if語句不起作用。

任何想法?

編輯:

我意識到,我有一個其他錯誤我的網頁屬於這種情況。
然後我使用了GridView而不是DataList,並使用了GridView的RowCommand事件並修復了這個問題。

回答

1

原因是因爲您試圖從DataList獲取CommandName而不是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

+0

唉,我知道了,我需要一個查找控件,你是對的。 –