2010-02-06 1 views
0

GridView가 포함 된 업데이트 패널이 있으며 그 안에는 ButtonField가 있습니다. 버튼을 누를 때마다 Firefox가 Firebug를 통해 두 개의 POST를 수행하는 것을 봅니다. 하나는 즉시 중단되지만 서버에 도달합니다. 이로 인해 명령 (사본)이 두 번 실행되면서 서버 측 코드에서 문제가 발생합니다.ButtonField를 사용하여 ButtonField를 두 번 눌러서 FireFox로 UpdatePanel 내의 GridView를 실행하십시오.

IE6 및 IE8은이 동작을 나타내지 않습니다.

누구나이 문제를 일으키는 원인을 알거나 내가 그것에 대해 할 수있는 것을 알고 있습니까?

내가이 페이지는 최소한으로 문제를 재현하는 데 성공했습니다

<form id="form1" runat="server"> 
<asp:XmlDataSource ID="XmlDataSource1" runat="server"> 
    <Data> 
<bla> 
<wibble wobble="1" /> 
</bla></Data> 
</asp:XmlDataSource> 
<asp:ScriptManager runat="server"></asp:ScriptManager> 
<asp:UpdatePanel runat="server"> 
<ContentTemplate> 

    <asp:Label runat="server" ID="Counter" Text="0"></asp:Label> 
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
     DataSourceID="XmlDataSource1" onrowcommand="GridView1_RowCommand"> 
     <Columns> 
      <asp:BoundField DataField="wobble" HeaderText="wobble" 
       SortExpression="wobble" /> 
      <asp:ButtonField HeaderText="wobble" CommandName="IncrementWobble" 
       SortExpression="wobble" ButtonType="Image" ImageUrl="icons/page_copy.png" Text="increment" /> 
     </Columns> 
    </asp:GridView> 
</ContentTemplate> 
</asp:UpdatePanel> 

</form> 

이 작은 버전을 만드는 동안, 나는 문제는 ButtonType와 ButtonType = "이미지"로 발생하지 않도록주의 = "버튼". 완성도를 들어

, 이벤트 핸들러 :

문제 주위 ImageButton 작품을 포함하는 TemplateField으로 ButtonField 교체 :

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    if (e.CommandName == "IncrementWobble") 
    { 
     int count = Int32.Parse(Counter.Text) + 1; 
     Counter.Text = count.ToString(); 
    } 
} 
+0

문제를 자세히 진단하기 위해 몇 가지 코드를 보여 주어야한다고 생각합니다. – Josh

+0

문제의 최소 코드 예제를 작성했습니다. –

답변

0

here에서, 내가 해결 방법을 발견했다. 나를 위해 충분하지만 여전히 ASP .NET이나 FireFox에서 버그처럼 보입니다.