2012-10-12 2 views
0

, 내가 ASPX에서 XMLDataSource을 정의 기억되지 않습니다설정 XMLDataSource.XPath는 내 응용 프로그램에서

<asp:XmlDataSource ID="XmlThickness" runat="server" 
    DataFile="~/XML/Data/products.xml" EnableCaching="False" 
    EnableViewState="False" 
    ></asp:XmlDataSource> 

이 데이터 소스는 그리드를 공급한다.

XmlThickness.XPath = "/Item[@label='" + tvwMaterials.SelectedNode.Text + "']/Thickness/Thick"; 
XmlThickness.DataBind(); 

이 작품의 전체를 내 코드에서

, 나는 업데이트 할 그리드를 일으키는 특정 기능의 특정 지점에서 XPath를 설정 한 다음 XMLDataSource에 새로운 데이터 바인딩()를 발행 매력이지만, 다른 함수 내에서 XPAth를 읽으려고하면 오류 메시지가 나타납니다.

XmlNode thick = myDataSource.SelectSingleNode(XmlThickness.XPath.ToString()); 

디버깅은 XPath 표현식이 실제로 비어 있음을 보여줍니다.

DataSource 생성을 코드로 이동 한 다음 그리드의 DataSourceID 만 설정하려고 시도했지만 작동하지 않았습니다.

이 작업을 시도하기 전에 XMLDataSource 정의에 기본 XPath를 정의했으며 그 시점에서 XMLNode thick 줄이이 기본 문자열을 반환했습니다.

XMLDataSource에서 XPath가 유지되지 않는 이유에 대해 다소 혼란 스럽습니다. 이전 함수에서 명시 적으로 설정했습니다. 누군가 날 위해 이걸 좀 털어 놓을 수 있겠 니?

답변

1

XmlDataSource 노드는 대부분의 데이터 소스 컨트롤과 마찬가지로 viewState에 저장되지 않습니다. 데이터 바인딩은 한 번만 호출해야하며, 컨트롤은 다시 게시 할 때 자동으로 다시 만들어야합니다. DataSourceID를 지정하고 DataBind()를 호출하기 전에 데이터 소스를 변경하려는 경우 selectedNode 양식을 Viewstate의 treeviw에 저장하고 포스트 백에서 viewState에서 값을 검색하여 dataSource를 변경하십시오.

http://forums.asp.net/t/1437802.aspx/1

+0

감사 : 여기를 보라. 이 링크는 보안상의 이유로 언급하고 있습니다. 어쨌든 xPath를 수동으로 채우는 것을 보면, 지금은 변수에 저장하고 있습니다. 그런 다음 나중에 적절한 노드를 찾으려면 나중에 사용하십시오. – SchmitzIT

관련 문제