2009-10-14 68 views
1

我有一箇中繼器控制其本身是一個更新面板內內4個單選按鈕單選檢查ASP的狀態:LinkBut​​ton的回傳

//代碼是這樣的

`<asp:update panel ..> 
... 
<asp:Repeater> 
.. 
<asp:checkbox> 
.. 
.. 
</asp:update panel ..> 
<asp:LinkButton ID="next2" runat="server" CssClass="button_Submit" Font-Bold="true" OnClick="next_ServerClick" Text="Submit"> 
<asp:ImageButton ID="next" ImageUrl="~/images/newSummary.jpg" runat="server" OnClick="next_ServerClick" ImageAlign="Middle"/> 
protected void next_ServerClick(object sender, EventArgs e) 
{ 
foreach (System.Web.UI.WebControls.RepeaterItem Item in repeatercontrol.Items) 
{ 
    chkbox = ((CheckBox)Item.FindControl(chkboxName)); 
    if (chkbox.checked) 
    { 
    ... 
    } 
} 
}` 

我選擇的一個複選框,當我點擊圖像按鈕,我能夠得到正確的狀態(checked = true)。

但是,當我使用鏈接按鈕,它總是作爲checked = false進來,就好像選擇沒有註冊。

爲什麼會發生這種情況的任何想法?

+0

您可以發佈您的代碼的後面,你這樣做是檢查兩個ImageButton的和的LinkBut​​ton? – 2009-10-14 17:09:10

+0

我正在詢問圍繞檢查循環的代碼。即:ImageButton和LinkBut​​ton的事件。 – 2009-10-14 17:31:04

+0

不確定你在問什麼。你是否問過事件處理程序的onclick事件。 protected void linkBut​​ton_Click(object sender,EventArgs e) { // code above } – jbagavathi 2009-10-14 17:38:40

回答

0

您需要在更新面板中註冊linkbutton click事件作爲觸發器。見下面的例子:

<asp:UpdatePanel ID="UpdatePanel1" runat="server" > 
    <ContentTemplate> 

     ... 

    </ContentTemplate> 

    <Triggers> 

     <asp:AsyncPostBackTrigger ControlID="LinkButtonID" EventName="Click" /> 

    </Triggers> 

</asp:UpdatePanel> 
+0

我試過了你的建議,但它仍然無效。 正如我所提到的,當我使用圖像按鈕時我能夠獲得價值(並且它不作爲觸發器添加) – jbagavathi 2009-10-14 17:12:46

0

在沒有看到代碼,該控件將是不正確的唯一理由是,如果你在Page Life Cycle加載ViewState之前檢查他們。

編輯: 使用單獨的事件聲明和集中查找邏輯:

protected void LinkButton1_Click(object sender, EventArgs e) 
    { 

    } 
    protected void ImageButton1_Click(object sender, ImageClickEventArgs e) 
    { 

    } 
+0

我正在檢查按鈕的onclick事件處理程序中的值。那麼,Viewstate應該已經被加載了,對嗎? – jbagavathi 2009-10-14 17:48:02

+0

是的,它應該在那些事件中。 – 2009-10-14 17:49:40

+0

我知道我一直在問,但是看看你如何聲明這些事件和實際的代碼隱藏會很有幫助。像這樣的事情往往是簡單的監督。 – 2009-10-14 17:51:46

相關問題