XML 구성에 의한 사용자 정의 컨트롤을 설정 중입니다. 예를 들어 설명하는 것이 더 쉽습니다. 다음 구성 가져온 부분을 살펴 보자 내가 하나의 텍스트 박스와 체크 박스 컨트롤에 그 조각을 번역 달성하기 위해 노력하고있어데이터 바인딩 된 리피터 내에 조건부 콘텐츠를 만드는 방법
<node>
<text lbl="Text:"/>
<checkbox lbl="Check me:" checked="true"/>
</node>
. 물론 스 니펫에 더 많은 노드가 포함되어 있으면 더 많은 컨트롤이 자동으로 생성됩니다.
작업의 반복적 인 특성을 알려주십시오. 리피터를 사용하기로했습니다. 그 안에는 두 개의 컨트롤 (하나 이상, 아래 참조) 컨트롤, 하나의 CheckBox 및 하나의 Editbox가 있습니다. 활성화 할 컨트롤을 선택하기 위해 인라인 스위치 명령을 사용하여 현재 구성 노드의 이름을 확인했습니다.
슬프게도, 작동하지 않습니다. 문제는 데이터 바인딩이 발생한 후 오랫동안 렌더링 시간 동안 스위치가 실행되고 있다는 사실에 있습니다. 그 자체만으로는 문제가되지 않을 것입니다. 구성 노드가 데이터 바인딩에 필요한 정보를 제공 할 수 있다는 사실 때문 만은 아닙니다. 체크 상자 컨트롤이 위의 스 니펫에있는 텍스트 노드에 바인딩하려고 시도 할 때 필자가 "checked"속성을 찾고자한다면 무슨 일이 일어날 지 생각해보십시오.
아이디어를 만드는 방법은 무엇입니까?
감사합니다, 보아스 여기
내 현재 코드입니다 :
여기은 (위의 것보다 더 복잡한 구문에서 실행) 내 코드입니다 :
<asp:Repeater ID="settingRepeater" runat="server">
<ItemTemplate>
<%
switch (((XmlNode)Page.GetDataItem()).LocalName)
{
case "text":
%>
<asp:Label ID="settingsLabel" CssClass="editlabel" Text='<%# XPath("@lbl") %>' runat="server" />
<asp:TextBox ID="settingsLabelText" Text='<%# SettingsNode.SelectSingleNode(XPath("@xpath").ToString()).InnerText %>'
runat="server" AutoPostBack="true" Columns='<%# XmlUtils.OptReadInt((XmlNode)Page.GetDataItem(),"@width",20) %>'
/>
<% break;
case "checkbox":
%>
<asp:CheckBox ID="settingsCheckBox" Text='<%# XPath("@lbl") %>' runat="server"
Checked='<%# ((XmlElement)SettingsNode.SelectSingleNode(XPath("@xpath").ToString())).HasAttribute(XPath("@att").ToString()) %>'
/>
<% break;
} %>
</ItemTemplate>
</asp:Repeater>