ScriptManager.RegisterDataItem 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
부분 페이지 렌더링 도중 사용자 지정 데이터를 컨트롤로 보냅니다.
오버로드
RegisterDataItem(Control, String) |
부분 페이지 렌더링 도중 사용자 지정 데이터를 컨트롤로 보냅니다. |
RegisterDataItem(Control, String, Boolean) |
부분 페이지 렌더링 도중 사용자 지정 데이터를 컨트롤로 보내고, 데이터가 JSON(JavaScript Object Notation) 형식인지 여부를 나타냅니다. |
RegisterDataItem(Control, String)
부분 페이지 렌더링 도중 사용자 지정 데이터를 컨트롤로 보냅니다.
public:
void RegisterDataItem(System::Web::UI::Control ^ control, System::String ^ dataItem);
public void RegisterDataItem (System.Web.UI.Control control, string dataItem);
member this.RegisterDataItem : System.Web.UI.Control * string -> unit
Public Sub RegisterDataItem (control As Control, dataItem As String)
매개 변수
- control
- Control
데이터를 받는 컨트롤입니다.
- dataItem
- String
컨트롤로 보내는 데이터입니다.
예외
control
이(가) null
인 경우
RegisterDataItem(Control, String, Boolean) 메서드가 포스트백 도중에 호출되는 경우
dataItem
이 이미 control
에 등록된 경우
예제
다음 예제에서는 비동기 포스트백 중에 페이지의 두 Label 컨트롤에 데이터를 보내는 방법을 보여 줍니다. 컨트롤이 Label 컨트롤 내에 UpdatePanel 있지 않습니다.
참고
이 예제에서 전송되는 데이터는 그림 전용입니다. 실제 애플리케이션을 사용 하 여는 RegisterDataItem 서버에서 사용자 지정 데이터를 전송 하는 방법입니다.
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
if (ScriptManager1.IsInAsyncPostBack)
{
System.Web.Script.Serialization.JavaScriptSerializer json =
new System.Web.Script.Serialization.JavaScriptSerializer();
ScriptManager1.RegisterDataItem(Label1, DateTime.Now.ToString());
ScriptManager1.RegisterDataItem(Label2, json.Serialize("more data"), true);
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>ScriptManager RegisterDataItem Example</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<script type="text/javascript" language="javascript">
Sys.WebForms.PageRequestManager.getInstance().add_pageLoading(PageLoadingHandler);
function PageLoadingHandler(sender, args) {
var dataItems = args.get_dataItems();
if ($get('Label1') !== null)
$get('Label1').innerHTML = dataItems['Label1'];
if ($get('Label2') !== null)
$get('Label2').innerHTML = dataItems['Label2'];
}
</script>
<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
<ContentTemplate>
UpdatePanel content.
<asp:Button ID="Button1" Text="Submit" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
<hr />
<asp:Label ID="Label1" runat="server" /> <br />
<asp:Label ID="Label2" runat="server" />
</div>
</form>
</body>
</html>
<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
If (ScriptManager1.IsInAsyncPostBack) Then
Dim json As New System.Web.Script.Serialization.JavaScriptSerializer
ScriptManager1.RegisterDataItem(Label1, DateTime.Now.ToString())
ScriptManager1.RegisterDataItem(Label2, json.Serialize("more data"), True)
End If
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>ScriptManager RegisterDataItem Example</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<script type="text/javascript" language="javascript">
Sys.WebForms.PageRequestManager.getInstance().add_pageLoading(PageLoadingHandler);
function PageLoadingHandler(sender, args) {
var dataItems = args.get_dataItems();
if ($get('Label1') !== null)
$get('Label1').innerHTML = dataItems['Label1'];
if ($get('Label2') !== null)
$get('Label2').innerHTML = dataItems['Label2'];
}
</script>
<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
<ContentTemplate>
UpdatePanel content.
<asp:Button ID="Button1" Text="Submit" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
<hr />
<asp:Label ID="Label1" runat="server" /> <br />
<asp:Label ID="Label2" runat="server" />
</div>
</form>
</body>
</html>
설명
데이터를 받는 컨트롤이 RegisterDataItem 컨트롤 내에 있는지 여부에 관계없이 비동기 포스트백 중에 서버에서 클라이언트로 데이터를 보내려면 이 메서드를 UpdatePanel 사용합니다.
메서드는 RegisterDataItem 비동기 포스트백 중에만 호출할 수 있습니다. 포스트백이 비동기인지 여부를 확인하려면 속성을 사용합니다 IsInAsyncPostBack . 이 메서드는 .로 설정된 매개 isJsonSerialized
변수를 사용하는 오버로드를 호출합니다 false
. 매개 변수를 isJsonSerialized
설정 false
하면 문자열이 JSON(JavaScript Object Notation)으로 직렬화되지 않습니다. JSON 형식에 대한 자세한 내용은 소개 JSON 웹 사이트를 참조하세요.
메서드에 RegisterDataItem 등록된 데이터 항목은 개체의 PageRequestManager
이벤트 및 endRequest
동안 pageLoading``pageLoaded
클라이언트 스크립트에서 액세스할 수 있습니다. 이러한 이벤트를 처리하면 사용자 지정 데이터가 이벤트 인수 개체에 전달됩니다. 예를 들어 이벤트에 대한 pageLoading
처리기를 제공하는 경우 사용자 지정 데이터는 속성을 노출하는 클래스에 PageLoadingEventArgs
전달됩니다 dataItems
.
추가 정보
적용 대상
RegisterDataItem(Control, String, Boolean)
부분 페이지 렌더링 도중 사용자 지정 데이터를 컨트롤로 보내고, 데이터가 JSON(JavaScript Object Notation) 형식인지 여부를 나타냅니다.
public:
void RegisterDataItem(System::Web::UI::Control ^ control, System::String ^ dataItem, bool isJsonSerialized);
public void RegisterDataItem (System.Web.UI.Control control, string dataItem, bool isJsonSerialized);
member this.RegisterDataItem : System.Web.UI.Control * string * bool -> unit
Public Sub RegisterDataItem (control As Control, dataItem As String, isJsonSerialized As Boolean)
매개 변수
- control
- Control
데이터를 받는 페이지 컨트롤입니다.
- dataItem
- String
컨트롤로 보내는 데이터입니다.
- isJsonSerialized
- Boolean
dataItem
이 JSON으로 serialize됨을 나타내면 true
이고, 그렇지 않으면 false
입니다.
예외
control
이(가) null
인 경우
RegisterDataItem(Control, String, Boolean) 메서드가 포스트백 도중에 호출되는 경우
dataItem
이 이미 control
에 등록된 경우
예제
다음 예제에서는 비동기 포스트백 중에 페이지의 두 Label 컨트롤에 데이터를 보내는 방법을 보여 줍니다. 컨트롤이 Label 컨트롤 내에 UpdatePanel 있지 않습니다. 이 예제에서는 매개 변수를 사용하지 않는 오버로드를 isJsonSerialized
보여줍니다. 그렇지 않으면 개체의 PageLoadingEventArgs
속성을 검색하는 dataItems
절차는 해당 오버로드를 사용하지 않은 경우와 동일합니다.
참고
이 예제에서 전송되는 데이터는 그림 전용입니다. 실제 애플리케이션을 사용 하 여는 RegisterDataItem 서버에서 사용자 지정 데이터를 전송 하는 방법입니다. 예를 들어 데이터 항목을 사용하여 컨트롤 내에 UpdatePanel 없는 클라이언트 요소를 숨기거나 표시할지에 대한 정보를 보낼 수 있습니다.
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
if (ScriptManager1.IsInAsyncPostBack)
{
System.Web.Script.Serialization.JavaScriptSerializer json =
new System.Web.Script.Serialization.JavaScriptSerializer();
ScriptManager1.RegisterDataItem(Label1, DateTime.Now.ToString());
ScriptManager1.RegisterDataItem(Label2, json.Serialize("more data"), true);
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>ScriptManager RegisterDataItem Example</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<script type="text/javascript" language="javascript">
Sys.WebForms.PageRequestManager.getInstance().add_pageLoading(PageLoadingHandler);
function PageLoadingHandler(sender, args) {
var dataItems = args.get_dataItems();
if ($get('Label1') !== null)
$get('Label1').innerHTML = dataItems['Label1'];
if ($get('Label2') !== null)
$get('Label2').innerHTML = dataItems['Label2'];
}
</script>
<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
<ContentTemplate>
UpdatePanel content.
<asp:Button ID="Button1" Text="Submit" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
<hr />
<asp:Label ID="Label1" runat="server" /> <br />
<asp:Label ID="Label2" runat="server" />
</div>
</form>
</body>
</html>
<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
If (ScriptManager1.IsInAsyncPostBack) Then
Dim json As New System.Web.Script.Serialization.JavaScriptSerializer
ScriptManager1.RegisterDataItem(Label1, DateTime.Now.ToString())
ScriptManager1.RegisterDataItem(Label2, json.Serialize("more data"), True)
End If
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>ScriptManager RegisterDataItem Example</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<script type="text/javascript" language="javascript">
Sys.WebForms.PageRequestManager.getInstance().add_pageLoading(PageLoadingHandler);
function PageLoadingHandler(sender, args) {
var dataItems = args.get_dataItems();
if ($get('Label1') !== null)
$get('Label1').innerHTML = dataItems['Label1'];
if ($get('Label2') !== null)
$get('Label2').innerHTML = dataItems['Label2'];
}
</script>
<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
<ContentTemplate>
UpdatePanel content.
<asp:Button ID="Button1" Text="Submit" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
<hr />
<asp:Label ID="Label1" runat="server" /> <br />
<asp:Label ID="Label2" runat="server" />
</div>
</form>
</body>
</html>
설명
이 메서드를 RegisterDataItem 사용하여 데이터를 받는 컨트롤이 컨트롤 내에 있는지 여부에 관계없이 비동기 포스트백 중에 서버에서 클라이언트로 UpdatePanel 데이터를 보냅니다.
등록하는 dataItem
매개 변수가 JSON으로 직렬화되지 않은 경우 매개 변수false
를 isJsonSerialized
.로 control
설정합니다. 이렇게 하면 클라이언트로 전송되는 각 문자열에 함수를 사용할 eval
필요가 없습니다. JSON 형식에 대한 자세한 내용은 소개 JSON 웹 사이트를 참조하세요.
메서드는 RegisterDataItem 비동기 포스트백 중에만 호출할 수 있습니다. 포스트백이 비동기인지 여부를 확인하려면 속성을 사용합니다 IsInAsyncPostBack .
메서드를 사용하여 RegisterDataItem 등록된 데이터 항목은 개체의 PageRequestManager
이벤트 및 endRequest
동안 pageLoading``pageLoaded
클라이언트 스크립트에서 액세스할 수 있습니다. 이러한 이벤트를 처리하면 사용자 지정 데이터가 이벤트 인수 개체에 전달됩니다. 예를 들어 이벤트에 대한 pageLoading
처리기를 제공하는 경우 사용자 지정 데이터는 속성을 노출하는 클래스에 PageLoadingEventArgs
전달됩니다 dataItems
.