在asp.net的ajax更新面板中使用AsyncPostBackTrigger时,未启用ImageButton

时间:2013-10-17 09:50:15

标签: c# asp.net web-applications asp.net-ajax

我正在使用带有c#的asp.net。我有两个图像按钮:打开和删除。 默认情况下,它们被禁用,即imgOpen.Enabled = false; imgDelete.Enabled = false;。 我有一个GridView,显示表中的搜索结果。 GridView包含一个单选按钮,选中后,应启用“打开和删除图像”按钮。 如果我不使用ajax更新面板,那么每当我选择一个单选按钮时,我的页面会重新加载,这非常令人不安而且不友好。

<asp:TemplateField>
     <ItemTemplate>
          <asp:UpdatePanel ID="updateRadioButton" runat="server">
              <ContentTemplate>
                  <asp:RadioButton ID="rdoBtnFileOption" runat="server" OnCheckedChanged="rdoBtnFileOption_CheckedChanged"  AutoPostBack="true" />
               </ContentTemplate>
               <Triggers>
               <asp:AsyncPostBackTrigger ControlID="rdoBtnFileOption" EventName="CheckedChanged" />
               </Triggers>
          </asp:UpdatePanel>
     </ItemTemplate>
</asp:TemplateField>



protected void rdoBtnFileOption_CheckedChanged(object sender, EventArgs e)
    {
        imgOpen.Enabled = true;
        imgDelete.Enabled = true;

        RadioButton curretnRdo = sender as RadioButton;
        GridViewRow currentRow = (GridViewRow)curretnRdo.NamingContainer;
        int index = currentRow.RowIndex;
        try
        {
            foreach (GridViewRow grv in grdSearchResults.Rows)
            {
                if (grv.RowType == DataControlRowType.DataRow && grv.RowIndex != index)
                {
                    RadioButton rdo = new RadioButton();
                    rdo = (RadioButton)(grv.FindControl("rdoBtnFileOption"));
                    rdo.Checked = false;
                }
            }
        }
        catch (Exception ex)
        {
            form.MessageBox.Show(ex.Message, "Error", form.MessageBoxButtons.OK, form.MessageBoxIcon.Error);
        }

    }

这两行不适合我。

imgOpen.Enabled = true;
imgDelete.Enabled = true;

请建议任何方法。 我希望我很清楚。

2 个答案:

答案 0 :(得分:1)

尝试以下

将您的imgDelete换成另一个UpdatePanel并设置UpdateMode=Conditional并设置触发

<asp:UpdatePanel ID="updateRadioButton" UpdateMode="Conditional" runat="server">
   <ContentTemplate>
   <asp:Image ID="imgOpen" runat="server"/>
   <asp:Image ID="imgDelete" runat="server"/>
   </ContentTemplate>
   <Triggers>
   <asp:AsyncPostBackTrigger ControlID="rdoBtnFileOption" 
      EventName="CheckedChanged" />
   </Triggers>
</asp:UpdatePanel>

set UpdateMode="Always" and No Triggers

答案 1 :(得分:0)

对于使用AsyncPostBack,内容也应该在Update面板中。

您可以使用另一个Asp:UpdatePanel与 UpdateMode =“始终”将图片放入其中。

<asp:UpdatePanel ID="UP1" runat="server" UpdateMode="Always">
            <ContentTemplate>
                <asp:ImageButton ID="imgOpen" runat="server" ImageUrl="" Visible="false" AlternateText="this is Open Image" />
                <asp:ImageButton ID="imgDelete" runat="server" ImageUrl="" Visible="false" AlternateText="this is Delete Image" />
            </ContentTemplate>
</asp:UpdatePanel>

祝你有所帮助。