2014-01-26 2 views
0

Когда я проверяю rbEmployee, происходит обратная передача, но это не для rbBatch. Почему это так.PostBack Not Happening For A Radio Button

ASPX:

<asp:RadioButton ID="rbBatch" runat="server" Text="Batch" GroupName="OB" 
CausesValidation="false" AutoPostBack="true" 
OnCheckedChanged="rbBatch_CheckedChanged"/> 

<asp:RadioButton ID="rbEmployee" runat="server" Text="Employee" GroupName="OB" 
CausesValidation="false" AutoPostBack="true" 
OnCheckedChanged="rbEmployee_CheckedChanged"/> 

<asp:UpdatePanel runat="server" UpdateMode="Conditional"> 
<Triggers> 
    <asp:AsyncPostBackTrigger ControlID="rbBatch" EventName="CheckedChanged"/> 
    <asp:AsyncPostBackTrigger ControlID="rbEmployee" EventName="CheckedChanged"/> 
</Triggers> 
<ContentTemplate> 
    <asp:GridView ID="gvBatch" runat="server"></asp:GridView> 
    <asp:GridView ID="gvMain" runat="server" visible="false"></asp:GridView> 
</ContentTemplate> 
</asp:UpdatePanel> 

C#:

protected void rbBatch_CheckedChanged(object sender, EventArgs e) 
{ 
    if(rbBatch.Checked) 
    { 
    gvBatch.visible=true; 
    gvMain.visible=false; 
    } 
} 

protected void rbEmployee_CheckedChanged(object sender, EventArgs e) 
{ 
    if(rbEmployee.Checked) 
    { 
    gvBatch.visible=false; 
    gvMain.visible=true; 
    } 
} 
+0

Как вы проверки для 'PostBack' событие – bjan

+0

точки останова в коде позади – Ruby

ответ

1

AsyncPostBack Trigger работает только в UpdatePanel, поэтому переместите RadioButtons на UpdatePanel и попробуйте снова.

+0

Это сработало. Спасибо. Любая причина, почему она работала только на одной из кнопок раньше? – Ruby

+0

@Ruby Async Postback Trigger работает только с панелью обновления – techno

+0

Я думаю, он также должен реализовать мое решение (с вашим) –

0

Вы пробовали CausesValidation = "правда"?

+0

Да. Это не сработало. – Ruby

0

Это связано с тем, что, когда вы выбираете A, событие B не срабатывает (если только не было выбрано недавно).

Лучшее решение заключается в следующем:

protected void rbBatch_CheckedChanged(object sender, EventArgs e) 
{ 
    handle(); 
} 

protected void rbEmployee_CheckedChanged(object sender, EventArgs e) 
{ 
    handle(); 
} 

private void handle() 
{ 
    if(rbBatch.Checked) 
    { 
    gvBatch.visible=true; 
    gvMain.visible=false; 
    } 
    else if(rbEmployee.Checked) 
    { 
    gvBatch.visible=false; 
    gvMain.visible=true; 
    } 
} 
+0

Нет, это не сработало. – Ruby