2010-12-03 2 views
2

updatepanel 내에 gridview가 있습니다. 행에는 해당 행을 삭제하는 삭제 버튼이 있습니다.updatepanel 내의 gridview delete 명령 및 __doPostback() 기능 분리

다른 곳에서는 행을 삽입하는 코드를 실행합니다. 이 insert 다음에 __doPostback()을 updatepanel의 ID와 함께 실행 한 다음 updatepanel의 load() 이벤트에서 gridview에서 databind()를 호출합니다.

마자 나는 __doPostback()와 데이터 바인딩을 구현 한, 붙박이있는 gridview가 정지 작업 삭제! :(실제로 행을 추가하면 실제 새로 고침/databind가 작동합니다.)

나는 이것을 극복 할 수 있습니까? 내가 생각하기에 뭔가가 잘못되었을 수 있습니다. 삭제 버튼을 클릭하면 데이터 바인드가 inbuild 삭제/새로 고침 기능과 충돌합니다. ?

감사

편집 :! 문제는 잘 설명되지 않은 경우 사과는 ...

는 기본적으로 내가와있는 gridview를 원하는 내장 삭제 기능 등 데이터 소스 및 명령 칼럼을 통해 . 또한 업데이트 패널 내부.이 패널을 별도로 업데이트하고 싶지만 t를 넣을 때 그의 별도의 업데이트 코드 (updatepanel.load의 gridview.databind)는 표준 삭제 기능을 해칩니다. 희망은 분명하다 :)

+0

행을 삽입하기 위해 실행하는 코드를 게시 할 수 있습니까? 이 코드는 삭제 버튼을 클릭 한 직후 실행됩니까? 이 두 사건이 어떻게 관련이 있는지 잘 모르겠습니다. – jwiscarson

+0

인서트는 USING 블록 안에 간단한 sqlCommand가 있으며 그 뒤에 기본 gridview를 매개 변수로 포함하는 updatepanel을 사용하여 __doPostback을 실행하는 ClientScript.RegisterStartupScript가옵니다. 이 코드는 sqldatasource 및 deletecommand 등을 통해 gridview에 'built-in'된 deletebutton과 관련이 없습니다. –

+0

덧글 - 레코드를 삽입하는 데 사용 된 외부 코드를 무시하고 사용하고있는 유일한 코드는 간섭을 일으킬 수 있습니다. gridview delete는 updatepanel의 load() 루틴에 있습니다. 여기 안에는 gridview.databind()가 있습니다. 그냥 "sys.webforms.pagerequestmanagerservererrereception : 유효하지 않은 포스트 백 또는 콜백 인수"라는 오류가 발생했다는 것을 알았습니다. 건배 –

답변

0

당신은 UpdatePanelMode를 조건부로 넣고 삽입 블록에서 ClientScript.RegisterStartupScript 외에도 UpdatePanel.Update()를 사용하려고 시도 했습니까?

+0

안녕하세요, clientscript 접근 방식을 무시하고 (이것은 다른 aspx 페이지에서 업데이트를 수행하기 때문에 발생합니다), UpdatePanel 내에 GridView를 래핑 할 때 -이 업데이트에서 DataBind를 호출하면 즉시 삭제 기능이 중단됩니다. . 내가 볼 수있다 (나는 생각한다?!) 그것이 일어나고있다. 그러나 그것을 피하는 길을 생각할 수 없다! –

0

나는 이벤트가의 GridView의 안쪽에 그리고 당신은 버튼과 같은 뭔가를 쉽게 할 수있는 한 그들에 액세스 할 수 없다는 문제가있다 생각합니다. 비동기 이벤트를 만들기 위해 GridView를 등록하려면 ScriptManager에 연결해야합니다.

당신이 RegisterAsyncpostBackControl 방법을 사용하여이 작업을 수행합니다.

여기에 일반적인 방법이 나와 있습니다. 당신은 내가 이런 짓을 한 이후

protected void Page_Load() 
{ 
    ScriptManager1.RegisterAsyncPostBackControl(GridView1); 
} 

그것은 오랜만이야하지만 당신은 '돈을 제외하고 나는 이것이 당신이 기대하는대로의 GridView가 작동 할 수 믿는가 뒤에 코드에서

<asp:ScriptManager ID="ScriptManager1" runat="server" /> 
<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server"> 
    <ContentTemplate> 
    <asp:GridView ID="GridView1" runat="server"> 
     <%-- your fields, etc --%> 
    </asp:GridView> 
    </ContentTemplate> 
</asp:UpdatePanel> 

여분의 DataBind()이 필요하지 않습니다.

는 또한 조건부로 UpdatePanel을 설정하고 Jeison이 제안이 위쪽에 UpdatePanel1.Update()을 발사 할 수 있습니다.

당신은 당신이 여전히 문제가 우리가 무슨 일이 있었는지 알려 경우 일부 http://msdn.microsoft.com/en-us/library/bb386452.aspx

에서 세부 사항을 추가 찾을 수 있습니다.

+0

시간을내어 주셔서 감사합니다, 불행히도 나는이 일을 얻을 수 없다 (아무런 차이가없는 것으로 보인다). 내가 틀린 일을하는지 잘 모르겠다. UpdatePanel_Load() 이벤트에 DataBind 문을 넣을 때까지 모든 것이 작동한다. GridView 외부에서 UpdatePanel을 새로 고침 할 수 있도록 거기에 필요하다. –

+0

Idon 추가 DataBind가 필요하다고 생각하지 않습니다. 항상 등록되기를 원하기 때문에 스크립트 관리자는 AsyncPostBack을 Page_Load에 연결하면 GridView를 처리해야합니다. – Kirk

+0

새로 고침을 강요하기 위해 UpdatePanel1.Update()를 할 수 있다고 생각하는 것을 잊어 버렸습니다. DataBind()를하지 마십시오 – Kirk

0

UpdatePanel로드 할 때마다 GridView를 DataBind() (으)로 호출하는 것처럼 보입니다. 삽입 버튼을 클릭하면로드가 완료되고 삭제되기 전에 데이터가 다시로드됩니다.

편집

그렇다면, 당신은 (updatePanelId, "true"로) __doPostBack에 부울 eventArgument를 추가 할 수 있습니다.그리고 이것을 사용하여 updatepanel로드 이벤트에 조건을 추가 할 수 있습니다.

if(this.updatepanel1.Page.Request.Params["__EVENTARGUMENT"] == "true"] 
    this.gridview.databind() 

희망 사항으로 문제를 해결할 수 있습니다.

+0

우우, 우린 아주 가까워지고있어! 이것은 실제로 초기 삭제 기능이 작동하도록 허용하고 데이터를 새로 고치는 updatepanel.load 이벤트 중에 databind()를 호출 할 수 있다는 점에서 훌륭합니다. 그러나 일단 데이터 바인딩 및 업데이트가 수행되면 삭제 기능이 다시 중단됩니다! 어떤 아이디어? (시도한 커크의 솔루션을 databind() 후 그것을 해결하지 않았다) –

+0

GridView에 바인딩하는 데이터 소스의 유형을 게시 할 수 있습니까? – Bharath

+0

그것은 sqldatasource, 저장 프로 시저 모두 '쉬운'방법 :) –

관련 문제