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();
}
}
문제를 자세히 진단하기 위해 몇 가지 코드를 보여 주어야한다고 생각합니다. – Josh
문제의 최소 코드 예제를 작성했습니다. –