将字符串放在流上以读入DataGrid [英] Putting a string onto a stream to be read into a DataGrid

查看:57
本文介绍了将字符串放在流上以读入DataGrid的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述




我试图在标签中保存DataGrid的数据,以便在重新发布表格

时可以重新填充DataGrid 。我遇到的问题是

我不明白如何将文本放入流中以便能够使用DataSetOutcomes1.ReadXML(MyStream)



在此先感谢,


詹姆斯

网页表格:


<%@ Page Language =" vb" AutoEventWireup =" false"

Codebehind =" course_new.aspx.vb"

Inherits =" _1137InsetBookingSystem.course_new"%>

<! - #INCLUDE file =" headeraspx.inc" - >

<! - #INCLUDE file =" tableheader.inc" - >

< form id =" FormNewCourse"方法= QUOT;交" runat =" server">

< table cellSpacing =" 0" COLS = QUOT; 3英寸CELLPADDING = QUOT; 0"宽度= QUOT; 100%QUOT; border =" 0">

< tr>

< td vAlign =" top">< asp:label id =" lblCourseTitle" runat =" server"

Font-Bold =" True">课程标题< / asp:label>< / td>

< td>< ; asp:textbox id =" txtCourseTitle" runat =" server">< / asp:textbox>< / td>

< td>& nbsp;< / td>

< ; / tr>

< tr>

< td colSpan =" 3">< asp:label id =" lblCourseTutorList" runat =" server"

Font-Bold =" True">课程导师< / asp:label>< / td>

< ; / tr>

< tr>

< td vAlign =" top">& nbsp;< / td>

< td>< asp:textbox id =" txtCourseTutor" runat =" server">< / asp:textbox>< / td>

< td>< asp:button id =" cmdAdd" RUNAT = QUOT;服务器"文本= QUOT;新增] BackColor ="#F6CD7A"

BorderStyle =" Solid" BorderWidth =" 1px"

Width =" 80px">< / asp:button>< / td>

< / tr>

< tr>

< td>& nbsp;< / td>

< td>< asp:textbox id =" ; txtTutorList" RUNAT = QUOT;服务器" Rows =" 5"

TextMode =" MultiLine">< / asp:textbox>< / td>

< td>& nbsp; < / td>

< / tr>

< tr>

< td colSpan =" 3">< ; asp:label id =" lblLearningOutcomes" runat =" server"

Font-Bold =" True">学习结果< / asp:label>< / td>

< / TD> < / tr>

< tr>

< td>& nbsp;< / td>

< td> < asp:textbox id =" txtOutcome" runat =" server">< / asp:textbox>< / td>

< td>< asp:button id =" cmdAddOutcome" RUNAT = QUOT;服务器" Text =" Add"

BackColor ="#F6CD7A" BorderStyle =Solid

BorderWidth =" 1px" Width =" 80px"

CausesValidation =" False">< / asp:button>< / td>

< / tr>

< tr>

< td>& nbsp;< / td>

< td>< asp:datagrid id = DataGridOutcomes RUNAT = QUOT;服务器" GridLines =" None"

AutoGenerateColumns =" False"数据成员= QUOT;成果" DataSource ="<%#

DatasetOutcomes1%>">

< HeaderStyle Font-Bold =" True">< / HeaderStyle>

< Columns>

< asp:TemplateColumn>

< ItemTemplate>

< ul>

< li>

< / li>

< / ul>

< / ItemTemplate> ;

< / asp:TemplateColumn>

< asp:BoundColumn DataField =" Name" SortExpression =" Name"

HeaderText =" Name">< / asp:BoundColumn>

< asp:BoundColumn DataField =" DisplayOrder"

SortExpression =" DisplayOrder" HeaderText =" DisplayOrder">< / asp:BoundColumn>

< asp:ButtonColumn Text ="删除"

ButtonType =" PushButton"> < / asp:ButtonColumn>

< asp:ButtonColumn Text =" Edit"

ButtonType =" PushButton">< / asp:ButtonColumn>

< / Columns>

< / asp:datagrid>< / td>

< td>& nbsp;< / td>

< / tr>

< tr>

< td colSpan =" 3">< asp :label id =" lblOutcomes"

runat =" server">< / asp:label>< / td>

< / tr>

< / table>

< / form>

<! - #INCLUDE file =" tablefooter.inc" - >

<! - #INCLUDE file =" footer.inc" - >

代码绑定:


进口系统

进口System.IO

进口System.Xml

Public Class course_new

继承System.Web.UI.Page


#Region" Web窗体设计器生成的代码


''Web窗体设计器需要此调用。

< System.Diagnostics.DebuggerStepThrough()> Private Sub

InitializeComponent()

Me.DatasetOutcomes1 = New _1137InsetBookingSystem.DatasetOutcomes

CType(Me.DatasetOutcomes1,

System.ComponentModel.ISupportInitialize).BeginIni t()

''

''DatasetOutcomes1

''

Me.DatasetOutcomes1.DataSetName =" DatasetOutcomes"

Me.DatasetOutcomes1.Locale = New

System.Globalization.CultureInfo(" en-GB")

CType(Me.DatasetOutcomes1,

System.ComponentModel.ISupportInitialize).EndInit()


End Sub

受保护的WithEvents lblCourseTitle As System.Web.UI.WebControls.Label

Protected WithEvents txtCourseTitle As System.Web.UI.WebControls.TextBox

Protected WithEvents txtCourseTutor As System.Web .UI.WebControls.TextBox

Protected WithEvents txtTutorList As System.Web.UI.WebControls.TextBox

Protected WithEvents cmdAdd As System.Web.UI.WebCon trols.Button

受保护的事件txtOutcome As System.Web.UI.WebControls.TextBox

Protected WithEvents cmdAddOutcome As System.Web.UI.WebControls.Button

受保护的事件lblCourseTutorList As

System.Web.UI.WebControls.Label

受保护的事件lblLearningOutcomes As

System.Web.UI。 WebControls.Label

受保护的事件DataGridOutcomes As

System.Web.UI.WebControls.DataGrid

受保护WithEvents DatasetOutcomes1 As

_1137InsetBookingSystem.DatasetOutcomes

受保护的事件lblOutcomes As System.Web.UI.WebControls.Label


''注意:以下占位符声明是必需的Web表格

设计师。

''不要删除或移动它。

私人designerPlaceholderDeclaration As System.Object

Private Sub Page_Init(ByVal sender As System.Object,ByVal e As

System.EventArgs)处理MyBa se.Init

''CODEGEN:Web表单设计器需要此方法调用

''不要使用代码编辑器修改它。

InitializeComponent()

End Sub


#End Region

Public gstrTableTitle As String =" Create course"

Public gstrTableAttribs As String


Private Sub Page_Load(ByVal sender As System.Object,ByVal e As

System.EventArgs)处理MyBase .Load

''用户代码在这里初始化页面

如果不是Page.IsPostBack那么

Me.DataGridOutcomes.DataBind()

Else

Dim str As String = Me.lblOutcomes.Text

Dim MyStream As StreamReader


如果str.Length> 0然后

MyStream =新StreamReader(str)

Me.DatasetOutcomes1.ReadXml(MyStream)


结束如果


''Me.DatasetOutcomes1.GetXml()

''


结束如果

结束Sub


Private Sub UpdateOutcomes()

Me.DataGridOutcomes.DataSource = Me.DatasetOutcomes1

Me.DataGridOutcomes.DataBind( )

End Sub


Private Sub cmdAdd_Click(ByVal sender As System.Object,ByVal e As

System.EventArgs)Handles cmdAdd.Click


如果是InStr(Me.txtTutorList.Text,Me.txtCourseTutor.Text)< 1然后

如果Me.txtTutorList.Text.Length> 0然后

Me.txtTutorList.Text = Me.txtTutorList.Text&英寸;" &安培; vbCrLf&

Me.txtCourseTutor.Text

Else

Me.txtTutorList.Text = Me.txtCourseTutor.Text

结束如果

结束如果

结束Sub


Private Sub cmdAddOutcome_Click(ByVal sender As System.Object,ByVal e

As System.EventArgs)处理cmdAddOutcome.Click

Dim dr As DatasetOutcomes.OutcomesRow


dr = Me.DatasetOutcomes1.Outcomes。 NewRow()

dr.Item(" Name")= Me.txtOutcome.Text

dr.Item(" DisplayOrder")= Me.DatasetOutcomes1.Outcomes。 Rows.Count

''DatasetOutcomes1.Outcomes.Rows.InsertAt(dr,

Me.DatasetOutcomes1.Outcomes.Rows.Count)


DatasetOutcomes1.Outcomes.Rows.Add(dr)

Me.DataGridOutcomes.DataBind()


Me.lblOutcomes.Text = Me.DatasetOutcomes1。 GetXml


结束子


结束班

解决方案

大部分时间,你的c ode可以遵循这种模式:


Private Sub Page_Load(ByVal sender As System.Object,ByVal a As

System.EventArgs)处理MyBase.Load

如果不是Page.IsPostBack那么

myDataSet = GetDataSetSomeHow()

myDataGrid.DataSource = myDataSet

myDataGrid.DataMember = FirstTable


DataBind()

结束如果

结束子


当页面回发时,网格(或其他控件)将从ViewState填充

本身。

-

John Saunders

互联网工程师
jo *********** @ surfcontrol.com

" James Norton-Jones" < JA **************** @ stopford.com>在消息中写道

新闻:3f *********************** @ news.easynet.co.uk。 ..



我是否试图在标签中保存DataGrid的数据,以便在重新发布
表单时可以重新填充DataGrid。我遇到的问题是
,我不明白如何将文本放入流中,以便能够使用
来使用DataSetOutcomes1.ReadXML(MyStream)。

提前致谢,

James

Web表单:

<%@ Page Language =" vb" AutoEventWireup =" false"
Codebehind =" course_new.aspx.vb"
Inherits =" _1137InsetBookingSystem.course_new"%>
<! - #INCLUDE file =" headeraspx.inc" - >
<! - #INCLUDE file =" tableheader.inc" - >
< form id =" FormNewCourse"方法= QUOT;交" runat =" server">
< table cellSpacing =" 0" COLS = QUOT; 3英寸CELLPADDING = QUOT; 0"宽度= QUOT; 100%QUOT; border =" 0">
< tr>
< td vAlign =" top">< asp:label id =" lblCourseTitle" runat =" server"
Font-Bold =" True">课程标题< / asp:标签>< / td>
< td>< asp:textbox id =" txtCourseTitle" runat =" server">< / asp:textbox>< / td>
< td>& nbsp;< / td>
< / tr>
< tr>
< td colSpan =" 3">< asp:label id =" lblCourseTutorList" runat =" server"
Font-Bold =" True">课程导师< / asp:label>< / td>
< / tr>
< tr>
< td vAlign =" top">& nbsp;< / td>
< td>< asp:textbox id =" txtCourseTutor" runat =" server">< / asp:textbox>< / td>
< td>< asp:button id =" cmdAdd" RUNAT = QUOT;服务器"文本= QUOT;新增]
BackColor ="#F6CD7A"边框= QUOT;固体" BorderWidth =" 1px"
Width =" 80px">< / asp:button>< / td>
< / tr>
< tr>
< td>& nbsp;< / td>
< td>< asp:textbox id =" txtTutorList" RUNAT = QUOT;服务器"行= QUOT; 5英寸
的TextMode = QUOT;多行">< / ASP:文本框>< / TD>
< TD>&安培; NBSP;< / TD>
< / tr>
< tr>
< td colSpan =" 3">< asp:label id =" lblLearningOutcomes" runat =" server"
Font-Bold =" True">学习成果< / asp:label>< / td>
< / TD>< / tr>
< tr>
< td>& nbsp;< / td>
< td>< asp:textbox id =" txtOutcome" runat =" server">< / asp:textbox>< / td>
< td>< asp:button id =" cmdAddOutcome" RUNAT = QUOT;服务器" Text =" Add"
BackColor ="#F6CD7A" BorderStyle =Solid
BorderWidth =" 1px" Width =" 80px"
CausesValidation =" False">< / asp:button>< / td>
< / tr>
< tr>
< td>& nbsp;< / td>
< td>< asp:datagrid id = DataGridOutcomes runat =" server" GridLines =" None"
AutoGenerateColumns =" False"数据成员= QUOT;成果"数据源= QUOT;<%#
DatasetOutcomes1%GT;">
< HeaderStyle字体-粗体="真">< / HeaderStyle>
<列>
< asp:TemplateColumn>
< ItemTemplate>
< ul>
< li>
< / li>
< / ul>
< / ItemTemplate>
< / asp:TemplateColumn>
< asp:BoundColumn DataField =" Name" SortExpression =" Name"
HeaderText =" Name">< / asp:BoundColumn>
< asp:BoundColumn DataField =" DisplayOrder"
SortExpression =" DisplayOrder" HeaderText =" DisplayOrder">< / asp:BoundColumn>
< asp:ButtonColumn Text ="删除"
ButtonType =" PushButton">< / asp:ButtonColumn>
< asp:ButtonColumn Text =" Edit"
ButtonType =" PushButton">< / asp:ButtonColumn>
< / Columns>
< / asp :datagrid>< / td>
< td>& nbsp;< / td>
< / tr>
< tr>
< td colSpan =" 3">< asp:label id =" lblOutcomes"
runat =" server">< / asp:label>< / td>
< / tr> ;
< / table>
< / form>
<! - #INCLUDE file =" tablefooter.inc" - >
<! - #INCLUDE file =" footer.inc" - >

代码绑定:

进口系统
进口System.IO
进口System.Xml

公开Class course_new
继承System.Web.UI.Page

#Region" Web窗体设计器生成的代码

Web窗体设计器需要此调用。
< System.Diagnostics.DebuggerStepThrough()> Private Sub
InitializeComponent()
Me.DatasetOutcomes1 = New _1137InsetBookingSystem.DatasetOutcomes
CType(Me.DatasetOutcomes1,
System.ComponentModel.ISupportInitialize).BeginIni t()
''
''DatasetOutcomes1
''
Me.DatasetOutcomes1.DataSetName =" DatasetOutcomes"
Me.DatasetOutcomes1.Locale = New
System.Globalization.CultureInfo( " en-GB")
CType(Me.DatasetOutcomes1,
System.ComponentModel.ISupportInitialize).EndInit()

End Sub
受保护的事件lblCourseTitle As System .Web.UI.WebControls.Label
受保护的事件txtCourseTitle As
System.Web.UI.WebControls.TextBox受保护的事件txtCourseTutor As
System.Web.UI.WebControls.TextBox受保护的事件txtTutorList As System.Web.UI.WebControls.TextBox
受保护的事件cmdAdd As System.Web.UI.WebControls .Button
受保护的事件txtOutcome As System.Web.UI.WebControls.TextBox
受保护的事件cmdAddOutcome As System.Web.UI.WebControls.Button
Protected WithEvents lblCourseTutorList As
System。 Web.UI.WebControls.Label
受保护的事件lblLearningOutcomes As
System.Web.UI.WebControls.Label
受保护的事件DataGridOutcomes As
System.Web.UI.WebControls.DataGrid <受保护的事件数据集结果1作为
_1137InsetBookingSystem.DatasetOutcomes
受保护的事件lblOutcomes As System.Web.UI.WebControls.Label

''注意:以下占位符声明是必需的Web
表单设计器。
''不要删除或移动它。
私有designerPlaceholderDeclaration As System.Object
私有子Page_Init(ByVal sender As System.Object ,ByVal e As
System.EventArgs)处理MyBase.Init
''CODEGEN:此方法Web表单设计器需要调用
''不要使用代码编辑器修改它。
InitializeComponent()
End Sub

#End Region
Public gstrTableTitle As String =" Create Course"
Public gstrTableAttribs As String


私有Sub Page_Load(ByVal sender As System.Object,ByVal e As
System.EventArgs)Handles MyBase.Load
''用户代码初始化页面
如果不是Page.IsPostBack那么
Me.DataGridOutcomes.DataBind()
其他
Dim str As String = Me.lblOutcomes.Text
Dim MyStream As StreamReader

如果str.Length> 0然后
MyStream = New StreamReader(str)
Me.DatasetOutcomes1.ReadXml(MyStream)

结束如果

''Me.DatasetOutcomes1.GetXml ()
''

结束如果
结束子

私人子更新结果()
Me.DataGridOutcomes.DataSource = Me.DatasetOutcomes1
Me.DataGridOutcomes.DataBind()
End Sub

私有子cmdAdd_Click(ByVal sender As System.Object,ByVal e As
System.EventArgs)处理cmdAdd。点击

如果InStr(Me.txtTutorList.Text,Me.txtCourseTutor.Text)< 1然后
如果Me.txtTutorList.Text.Length> 0然后
Me.txtTutorList.Text = Me.txtTutorList.Text&英寸;" &安培; vbCrLf
& Me.txtCourseTutor.Text
其他
Me.txtTutorList.Text = Me.txtCourseTutor.Text
结束如果
结束如果
结束子
Private Sub cmdAddOutcome_Click(ByVal sender As System.Object,ByVal e
As System.EventArgs)处理cmdAddOutcome.Click
Dim dr As DatasetOutcomes.OutcomesRow

dr = Me.DatasetOutcomes1 .Outcomes.NewRow()
dr.Item(" Name")= Me.txtOutcome.Text
dr.Item(" DisplayOrder")= Me.DatasetOutcomes1.Outcomes.Rows.Count
''DatasetOutcomes1.Outcomes.Rows.InsertAt(dr,
Me.DatasetOutcomes1.Outcomes.Rows.Count)

DatasetOutcomes1.Outcomes.Rows.Add(dr)
Me.DataGridOutcomes.DataBind()

Me.lblOutcomes.Text = Me.DatasetOutcomes1.GetXml

End Sub

结束课



DatasetCourse链接到xml架构定义数据结构和

数据本身是一个xml doc。它背后没有数据库,因此

需要在回发时从xml数据重新填充。

架构:

<?xml版本= QUOT; 1.0"编码= QUOT; UTF-8英寸?>

< xs:schema id =" DatasetOutcomes"

targetNamespace =" http://tempuri.org/DatasetOutcomes.xsd"

将elementFormDefault = QUOT;合格"

attributeFormDefault = QUOT;合格"

的xmlns = QUOT; HTTP:// HTTP://本地主机/ 1137InsetBookingSystem / DatasetOutcomes。 xsd"

xmlns:mstns =" http://tempuri.org/DatasetOutcomes.xsd"

xmlns:xs =" http://www.w3。 org / 2001 / XMLSchema"

xmlns:msdata =" urn:schemas-microsoft-com:xml-msdata">

< xs:element name =" ; DatasetOutcomes" msdata:IsDataSet =" true">

< xs:complexType>

< xs:choice maxOccurs =" unbounded">

< xs:element name =" Outcomes">

< xs:complexType>

< xs:sequence>

< xs:element name =" Description"类型= QUOT; XS:串QUOT;的minOccurs = QUOT; 0" />

< xs:element name =" DisplayOrder"类型= QUOT; XS:INT"的minOccurs = QUOT; 0" />

< / xs:sequence>

< / xs:complexType>

< / xs:element>

< / xs:choice>

< / xs:complexType>

< xs:key name =" DatasetOutcomesKey1" msdata:PrimaryKey =" true">

< xs:selector xpath =" .// mstns:Outcomes" />

< xs:field xpath =" mstns:Description" />

< / xs:key>

< / xs:element>

< / xs:schema>

" John Saunders" <乔*********** @ surfcontrol.com>在消息中写道

news:u1 ************** @ TK2MSFTNGP09.phx.gbl ...

James,
我很高兴你解决了你的问题,但我想知道你如何在回发中使用
数据集课程?
-
John Saunders
互联网工程师
jo***********@surfcontrol.com <詹姆斯诺顿琼斯詹姆斯诺顿琼斯 < JA **************** @ stopford.com>在消息中写道
新闻:3f *********************** @ news.easynet.co.uk。 ..

使用以下方法管理解决它:
Private Sub Page_Load(ByVal sender As System.Object,ByVal e As
System.EventArgs)处理MyBase.Load
''将用户代码置于此处初始化页面
如果不是Page.IsPostBack那么

Me.DataGridOutcomes.DataBind()
否则
''创建XML片段要解析。
Dim xmlFrag As String = Me.lblOutcomes.Text

如果xmlFrag.Length> 0然后

''创建XmlNamespaceManager。
Dim nt As NameTable = New NameTable
Dim nsmgr As XmlNamespaceManager = New
XmlNamespaceManager(nt)

''创建XmlParserContext。
Dim context As XmlParserContext = New
XmlParserContext(Nothing,nsmgr,Nothing,XmlSpace.None)

''创建阅读器。
Dim xmlTR As XmlTextReader = New XmlTextReader(xmlFrag,
XmlNodeType.Element,context)

Me.DatasetCourse.ReadXml(xmlTR)

结束如果<结束如果
结束Sub

" John Saunders" <乔*********** @ surfcontrol.com>在消息中写道
新闻:OP ************** @ TK2MSFTNGP09.phx.gbl ...

大部分时间,您的代码都可以关注这种模式:

Private Sub Page_Load(ByVal sender As System.Object,ByVal a As
System.EventArgs)处理MyBase.Load
如果不是Page.IsPostBack则
myDataSet = GetDataSetSomeHow()
myDataGrid.DataSource = myDataSet
myDataGrid.DataMember =" FirstTable"

DataBind()
结束如果
结束Sub

页面回发后,网格(或其他控件)将从$ View填充自己的状态。
-
John Saunders
互联网工程师
jo***********@surfcontrol.com

" James Norton-Jones" < JA **************** @ stopford.com>写在
消息新闻:3f *********************** @ news.easynet.co.uk。 ..
>
>
>我是否试图在标签中保存DataGrid的数据,以便在
表单时
>重新发布的DataGrid可以重新填充。我遇到的问题是
>我不明白如何将文本放入流中以便能够
>使用DataSetOutcomes1.ReadXML(MyStream)。
>
>在此先感谢,
>
>詹姆斯
>
>
>网页表格:
>
> <%@ Page Language =" vb" AutoEventWireup =" false"
> Codebehind =" course_new.aspx.vb"
> Inherits =" _1137InsetBookingSystem.course_new"%>
> < ;! - #INCLUDE file =" headeraspx.inc" - >
> < ;! - #INCLUDE file =" tableheader.inc" - >
> < form id =" FormNewCourse"方法= QUOT;交" runat =" server">
> < table cellSpacing =" 0" COLS = QUOT; 3英寸CELLPADDING = QUOT; 0" width =" 100%"


border =" 0">

> < tr>
> < td vAlign =" top">< asp:label id =" lblCourseTitle" runat =" server"
> Font-Bold =" True">课程标题< / asp:标签>< / td>
> < TD>< ASP:文本框ID = QUOT; txtCourseTitle"

RUNAT = QUOT;服务器">< / ASP:文本框>< / TD> > < td>& nbsp;< / td>
> < / tr>
> < tr>
> < td colSpan =" 3">< asp:label id =" lblCourseTutorList" runat =" server"
> Font-Bold =" True">课程导师< / asp:label>< / td>
> < / tr>
> < tr>
> < td vAlign =" top">& nbsp;< / td>
> < TD>< ASP:文本框ID = QUOT; txtCourseTutor"

RUNAT = QUOT;服务器">< / ASP:文本框>< / TD> > < td>< asp:button id =" cmdAdd" RUNAT = QUOT;服务器" Text =" Add"
BackColor ="#F6CD7A"
>边框= QUOT;固体" BorderWidth =" 1px"
> Width =" 80px">< / asp:button>< / td>
> < / tr>
> < tr>
> < td>& nbsp;< / td>
> < td>< asp:textbox id =" txtTutorList" RUNAT = QUOT;服务器"行=5
> TextMode =" MultiLine">< / asp:textbox>< / td>
> < td>& nbsp;< / td>
> < / tr>
> < tr>
> < td colSpan =" 3">< asp:label id =" lblLearningOutcomes"
runat =" server" > Font-Bold =" True">学习成果< / asp:label>< / td>
> < / TD>< / tr>
> < tr>
> < td>& nbsp;< / td>
> < td>< asp:textbox id =" txtOutcome"
runat =" server">< / asp:textbox>< / td> > < td>< asp:button id =" cmdAddOutcome" RUNAT = QUOT;服务器"文字=添加
>背景色= QUOT;#F6CD7A" BorderStyle =Solid
>边框宽度= QUOT; 1px的"宽度=80px
> CausesValidation =" False">< / asp:button>< / td>
> < / tr>
> < tr>
> < td>& nbsp;< / td>
> < td>< asp:datagrid id = DataGridOutcomes runat =" server"网格线= QUOT;无" >的AutoGenerateColumns = QUOT假QUOT;数据成员= QUOT;成果" DataSource ="<%#
> DatasetOutcomes1%>">
> < HeaderStyle Font-Bold =" True">< / HeaderStyle>
> < Columns>
> < asp:TemplateColumn>
> < ItemTemplate>
> < ul>
> < li>
> < / li>
> < / ul>
> < / ItemTemplate>
> < / asp:TemplateColumn>
> < asp:BoundColumn DataField =" Name" SortExpression =" Name"
> HeaderText =" Name">< / asp:BoundColumn>
> < asp:BoundColumn DataField =" DisplayOrder"
> SortExpression =" DisplayOrder"


HeaderText =" DisplayOrder">< / asp:BoundColumn>

> < asp:ButtonColumn Text ="删除"
> ButtonType =" PushButton">< / asp:ButtonColumn>
> < asp:ButtonColumn Text =" Edit"
> ButtonType =" PushButton">< / asp:ButtonColumn>
> < / Columns>
> < / asp:datagrid>< / td>
> < td>& nbsp;< / td>
> < / tr>
> < tr>
> < td colSpan =" 3">< asp:label id =" lblOutcomes"
> runat =" server">< / asp:label>< / td>
> < / tr>
> < / table>
> < / form>
> <! - #INCLUDE file =" tablefooter.inc" - >
> < ;! - #INCLUDE file =" footer.inc" - >
>
>
>代码绑定:
>
>进口系统
> Imports System.IO
>进口System.Xml
>
>
>公共课程_新闻
>继承System.Web.UI.Page
>
> #Region" Web表单设计器生成的代码
>
> ''Web表单设计器需要此调用。
> < System.Diagnostics.DebuggerStepThrough()>私人子
> InitializeComponent()
> Me.DatasetOutcomes1 = New


_1137InsetBookingSystem.DatasetOutcomes

> CType(Me.DatasetOutcomes1,
> System.ComponentModel.ISupportInitialize).BeginIni t()
> ''
> ''DatasetOutcomes1
> ''
> Me.DatasetOutcomes1.DataSetName =" DatasetOutcomes"
> Me.DatasetOutcomes1.Locale = New
> System.Globalization.CultureInfo(" en-GB")
> CType(Me.DatasetOutcomes1,
> System.ComponentModel.ISupportInitialize).EndInit()
>
>结束子
>受保护的WithEvents lblCourseTitle As


System.Web.UI.WebControls.Label

> Protected WithEvents txtCourseTitle As
System.Web.UI.WebControls.TextBox
> Protected WithEvents txtCourseTutor As
System.Web.UI.WebControls.TextBox
> Protected WithEvents txtTutorList As


System.Web.UI.WebControls.TextBox

> Protected WithEvents cmdAdd As System.Web.UI.WebControls.Button
> Protected WithEvents txtOutcome As System.Web.UI.WebControls.TextBox > Protected WithEvents cmdAddOutcome As


System.Web.UI.WebControls.Button

> Protected WithEvents lblCourseTutorList As
> System.Web.UI.WebControls.Label
> Protected WithEvents lblLearningOutcomes As
> System.Web.UI.WebControls.Label
> Protected WithEvents DataGridOutcomes As
> System.Web.UI.WebControls.DataGrid
> Protected WithEvents DatasetOutcomes1 As
> _1137InsetBookingSystem.DatasetOutcomes
> Protected WithEvents lblOutcomes As System.Web.UI.WebControls.Label >
> ’’NOTE: The following placeholder declaration is required by the Web Form
> Designer.
> ’’Do not delete or move it.
> Private designerPlaceholderDeclaration As System.Object
>
> Private Sub Page_Init(ByVal sender As System.Object, ByVal e As
> System.EventArgs) Handles MyBase.Init
> ’’CODEGEN: This method call is required by the Web Form Designer > ’’Do not modify it using the code editor.
> InitializeComponent()
>结束子
>
> #End Region
> Public gstrTableTitle As String = "Create Course"
> Public gstrTableAttribs As String
>
> Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
> System.EventArgs) Handles MyBase.Load
> ’’Put user code to initialize the page here
> If Not Page.IsPostBack Then
> Me.DataGridOutcomes.DataBind()
> Else
> Dim str As String = Me.lblOutcomes.Text
> Dim MyStream As StreamReader
>
> If str.Length > 0 Then
> MyStream = New StreamReader(str)
> Me.DatasetOutcomes1.ReadXml(MyStream)
>
>结束如果
>
>
>
> ’’Me.DatasetOutcomes1.GetXml()
> ’’
>
> End If
>结束子
>
> Private Sub UpdateOutcomes()
> Me.DataGridOutcomes.DataSource = Me.DatasetOutcomes1
> Me.DataGridOutcomes.DataBind()
>结束子
>
> Private Sub cmdAdd_Click(ByVal sender As System.Object, ByVal e
As > System.EventArgs) Handles cmdAdd.Click
>
> If InStr(Me.txtTutorList.Text, Me.txtCourseTutor.Text) < 1 Then > If Me.txtTutorList.Text.Length > 0 Then
> Me.txtTutorList.Text = Me.txtTutorList.Text &英寸;" &


vbCrLf

&
> Me.txtCourseTutor.Text
> Else
> Me.txtTutorList.Text = Me.txtCourseTutor.Text
> End If
> End If
>结束子
>
> Private Sub cmdAddOutcome_Click(ByVal sender As System.Object,


ByVal

e

> As System.EventArgs) Handles cmdAddOutcome.Click
> Dim dr As DatasetOutcomes.OutcomesRow
>
> dr = Me.DatasetOutcomes1.Outcomes.NewRow()
> dr.Item("Name") = Me.txtOutcome.Text
> dr.Item("DisplayOrder") =


Me.DatasetOutcomes1.Outcomes.Rows.Count

> ’’DatasetOutcomes1.Outcomes.Rows.InsertAt(dr,
> Me.DatasetOutcomes1.Outcomes.Rows.Count)
>
> DatasetOutcomes1.Outcomes.Rows.Add(dr)
> Me.DataGridOutcomes.DataBind()
>
> Me.lblOutcomes.Text = Me.DatasetOutcomes1.GetXml
>
>结束子
>
> End Class
>
>
>





Ok, I don’’t think I’’ve ever used an updateable XML file yet, so I didn’’t see

that. In order to update even a single row, you have to read in the entire

file.


Please pardon me for being dense, was your question ever actually answered?

:-)


If I were you, I think I’’d store DatasetCourse in Session state. On the

other hand, if you’’re going to be making multiple changes to the data per

session, I think I’’d keep it in Session, but flush to disk whenever a change

was made. That way, if the session expires (seen as Session("DatasetCourse")

Is Nothing), then you can re-load it from the disk file (which you’’ll need

to uniquely name, without resorting to the Session ID!)

--

John Saunders

Internet Engineer
jo***********@surfcontrol.com


"James Norton-Jones" <ja****************@stopford.com>在消息中写道

新闻:3f *********************** @ news.easynet.co.uk。 ..

DatasetCourse is linked to an xml schema to define the data structure and
the data its self is an xml doc. There is no database behind it, hence the
need to repopulate from the xml data on postback.

Schema:
<?xml version="1.0"编码= QUOT; UTF-8英寸?>
<xs:schema id="DatasetOutcomes"
targetNamespace="http://tempuri.org/DatasetOutcomes.xsd"
elementFormDefault="qualified"
attributeFormDefault="qualified"
xmlns="http://http://localhost/1137InsetBookingSystem/DatasetOutcomes.xsd"
xmlns:mstns="http://tempuri.org/DatasetOutcomes.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="DatasetOutcomes" msdata:IsDataSet="true">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="Outcomes">
<xs:complexType>
<xs:sequence>
<xs:element name="Description"类型= QUOT; XS:串QUOT;的minOccurs = QUOT; 0" />
<xs:element name="DisplayOrder"类型= QUOT; XS:INT"的minOccurs = QUOT; 0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
<xs:key name="DatasetOutcomesKey1" msdata:PrimaryKey="true">
<xs:selector xpath=".//mstns:Outcomes" />
<xs:field xpath="mstns:Description" />
</xs:key>
</xs:element>
</xs:schema>

"John Saunders" <jo***********@surfcontrol.com> wrote in message
news:u1**************@TK2MSFTNGP09.phx.gbl...

James,

I’’m glad you solved your problem, but I’’m wondering how you use
DatasetCourse on postbacks?
--
John Saunders
Internet Engineer
jo***********@surfcontrol.com

"James Norton-Jones" <ja****************@stopford.com> wrote in message
news:3f***********************@news.easynet.co.uk. ..

Managed to solve it using:
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
’’Put user code to initialize the page here
If Not Page.IsPostBack Then

Me.DataGridOutcomes.DataBind()
Else
’’Create the XML fragment to be parsed.
Dim xmlFrag As String = Me.lblOutcomes.Text

If xmlFrag.Length > 0 Then

’’Create the XmlNamespaceManager.
Dim nt As NameTable = New NameTable
Dim nsmgr As XmlNamespaceManager = New
XmlNamespaceManager(nt)

’’Create the XmlParserContext.
Dim context As XmlParserContext = New
XmlParserContext(Nothing, nsmgr, Nothing, XmlSpace.None)

’’Create the reader.
Dim xmlTR As XmlTextReader = New
XmlTextReader(xmlFrag, XmlNodeType.Element, context)

Me.DatasetCourse.ReadXml(xmlTR)

End If
End If
End Sub

"John Saunders" <jo***********@surfcontrol.com> wrote in message
news:OP**************@TK2MSFTNGP09.phx.gbl...
> Most of the time, your code can follow this pattern:
>
> Private Sub Page_Load(ByVal sender As System.Object, ByVal a As
> System.EventArgs) Handles MyBase.Load
> If Not Page.IsPostBack Then
> myDataSet = GetDataSetSomeHow()
> myDataGrid.DataSource = myDataSet
> myDataGrid.DataMember = "FirstTable"
>
> DataBind()
> End If
>结束子
>
> When the page is posted back, the grid (or other controls) will populate > itself from ViewState.
> -
> John Saunders
> Internet Engineer
> jo***********@surfcontrol.com
>
>
> "James Norton-Jones" <ja****************@stopford.com>在消息中写道> news:3f***********************@news.easynet.co.uk. ..
> >
> >
> > Am I trying to hold the data of a DataGrid in a label so that when the >表格
> > is reposted the DataGrid can be repopulated. The problem I am
having

is

>
> > I don’’t understand how to get the text into a stream in order to


be

able

>到
> > use DataSetOutcomes1.ReadXML(MyStream).
> >
> > Thanks in advance,
> >
> > James
> >
> >
> > Web Form:
> >
> > <%@ Page Language="vb" AutoEventWireup="false"
> > Codebehind="course_new.aspx.vb"
> > Inherits="_1137InsetBookingSystem.course_new"%>
> > <!-- #INCLUDE file="headeraspx.inc" - >
> > <!-- #INCLUDE file="tableheader.inc" - >
> > <form id="FormNewCourse"方法= QUOT;交" runat="server">
> > <table cellSpacing="0" cols="3" CELLPADDING = QUOT; 0" width="100%"
border="0">
> > <tr>
> > <td vAlign="top"><asp:label id="lblCourseTitle" runat="server"
> > Font-Bold="True">Course Title</asp:label></td>
> > <td><asp:textbox id="txtCourseTitle"
runat="server"></asp:textbox></td>
> > <td>&nbsp;</td>
> > </tr>
> > <tr>
> > <td colSpan="3"><asp:label id="lblCourseTutorList"


runat="server" > > Font-Bold="True">Course Tutor(s)</asp:label></td>
> > </tr>
> > <tr>
> > <td vAlign="top">&nbsp;</td>
> > <td><asp:textbox id="txtCourseTutor"
runat="server"></asp:textbox></td>
> > <td><asp:button id="cmdAdd" RUNAT = QUOT;服务器" Text="Add"
> BackColor="#F6CD7A"
> > BorderStyle="Solid" BorderWidth="1px"
> > Width="80px"></asp:button></td>
> > </tr>
> > <tr>
> > <td>&nbsp;</td>
> > <td><asp:textbox id="txtTutorList" RUNAT = QUOT;服务器" Rows="5"
> > TextMode="MultiLine"></asp:textbox></td>
> > <td>&nbsp;</td>
> > </tr>
> > <tr>
> > <td colSpan="3"><asp:label id="lblLearningOutcomes"

runat="server" > > Font-Bold="True">Learning Outcomes</asp:label></td>
> > </TD></tr>
> > <tr>
> > <td>&nbsp;</td>
> > <td><asp:textbox id="txtOutcome" runat="server"></asp:textbox></td> > > <td><asp:button id="cmdAddOutcome" RUNAT = QUOT;服务器" Text="Add"
> > BackColor="#F6CD7A" BorderStyle="Solid"
> > BorderWidth="1px" Width="80px"
> > CausesValidation="False"></asp:button></td>
> > </tr>
> > <tr>
> > <td>&nbsp;</td>
> > <td><asp:datagrid id=DataGridOutcomes runat="server"


GridLines="None"

> >的AutoGenerateColumns = QUOT假QUOT; DataMember="Outcomes" DataSource="<%#
> > DatasetOutcomes1 %>">
> > <HeaderStyle Font-Bold="True"></HeaderStyle>
> > <Columns>
> > <asp:TemplateColumn>
> > <ItemTemplate>
> > < ul>
> > <li>
> > </li>
> > </ul>
> > </ItemTemplate>
> > </asp:TemplateColumn>
> > <asp:BoundColumn DataField="Name" SortExpression="Name"
> > HeaderText="Name"></asp:BoundColumn>
> > <asp:BoundColumn DataField="DisplayOrder"
> > SortExpression="DisplayOrder"
HeaderText="DisplayOrder"></asp:BoundColumn>
> > <asp:ButtonColumn Text="Delete"
> > ButtonType="PushButton"></asp:ButtonColumn>
> > <asp:ButtonColumn Text="Edit"
> > ButtonType="PushButton"></asp:ButtonColumn>
> > </Columns>
> > </asp:datagrid></td>
> > <td>&nbsp;</td>
> > </tr>
> > <tr>
> > <td colSpan="3"><asp:label id="lblOutcomes"
> > runat="server"></asp:label></td>
> > </tr>
> > </table>
> > </form>
> > <!-- #INCLUDE file="tablefooter.inc" - >
> > <!-- #INCLUDE file="footer.inc" - >
> >
> >
> > Code Bind:
> >
> > Imports System
> > Imports System.IO
> > Imports System.Xml
> >
> >
> > Public Class course_new
> > Inherits System.Web.UI.Page
> >
> > #Region " Web Form Designer Generated Code "
> >
> > ’’This call is required by the Web Form Designer.
> > <System.Diagnostics.DebuggerStepThrough()> Private Sub
> > InitializeComponent()
> > Me.DatasetOutcomes1 = New
_1137InsetBookingSystem.DatasetOutcomes
> > CType(Me.DatasetOutcomes1,
> > System.ComponentModel.ISupportInitialize).BeginIni t()
> > ’’
> > ’’DatasetOutcomes1
> > ’’
> > Me.DatasetOutcomes1.DataSetName = "DatasetOutcomes"
> > Me.DatasetOutcomes1.Locale = New
> > System.Globalization.CultureInfo("en-GB")
> > CType(Me.DatasetOutcomes1,
> > System.ComponentModel.ISupportInitialize).EndInit( )
> >
> >结束子
> > Protected WithEvents lblCourseTitle As
System.Web.UI.WebControls.Label
> > Protected WithEvents txtCourseTitle As
> System.Web.UI.WebControls.TextBox
> > Protected WithEvents txtCourseTutor As
> System.Web.UI.WebControls.TextBox
> > Protected WithEvents txtTutorList As
System.Web.UI.WebControls.TextBox
> > Protected WithEvents cmdAdd As
System.Web.UI.WebControls.Button > > Protected WithEvents txtOutcome As


System.Web.UI.WebControls.TextBox

> > Protected WithEvents cmdAddOutcome As
System.Web.UI.WebControls.Button
> > Protected WithEvents lblCourseTutorList As
> > System.Web.UI.WebControls.Label
> > Protected WithEvents lblLearningOutcomes As
> > System.Web.UI.WebControls.Label
> > Protected WithEvents DataGridOutcomes As
> > System.Web.UI.WebControls.DataGrid
> > Protected WithEvents DatasetOutcomes1 As
> > _1137InsetBookingSystem.DatasetOutcomes
> > Protected WithEvents lblOutcomes As


System.Web.UI.WebControls.Label

> >
> > ’’NOTE: The following placeholder declaration is required by
the Web

> Form
> > Designer.
> > ’’Do not delete or move it.
> > Private designerPlaceholderDeclaration As System.Object
> >
> > Private Sub Page_Init(ByVal sender As System.Object, ByVal e


As > > System.EventArgs) Handles MyBase.Init
> > ’’CODEGEN: This method call is required by the Web Form


Designer

> > ’’Do not modify it using the code editor.
> > InitializeComponent()
> >结束子
> >
> > #End Region
> > Public gstrTableTitle As String = "Create Course"
> > Public gstrTableAttribs As String
> >
> > Private Sub Page_Load(ByVal sender As System.Object, ByVal e
As > > System.EventArgs) Handles MyBase.Load
> > ’’Put user code to initialize the page here
> > If Not Page.IsPostBack Then
> > Me.DataGridOutcomes.DataBind()
> > Else
> > Dim str As String = Me.lblOutcomes.Text
> > Dim MyStream As StreamReader
> >
> > If str.Length > 0 Then
> > MyStream = New StreamReader(str)
> > Me.DatasetOutcomes1.ReadXml(MyStream)
> >
> > End If
> >
> >
> >
> > ’’Me.DatasetOutcomes1.GetXml()
> > ’’
> >
> > End If
> >结束子
> >
> > Private Sub UpdateOutcomes()
> > Me.DataGridOutcomes.DataSource = Me.DatasetOutcomes1
> > Me.DataGridOutcomes.DataBind()
> >结束子
> >
> > Private Sub cmdAdd_Click(ByVal sender As System.Object, ByVal
e As > > System.EventArgs) Handles cmdAdd.Click
> >
> > If InStr(Me.txtTutorList.Text, Me.txtCourseTutor.Text) < 1


Then

> > If Me.txtTutorList.Text.Length > 0 Then
> > Me.txtTutorList.Text = Me.txtTutorList.Text & ";"



& vbCrLf
> &
> > Me.txtCourseTutor.Text
> > Else
> > Me.txtTutorList.Text = Me.txtCourseTutor.Text
> > End If
> > End If
> >结束子
> >
> > Private Sub cmdAddOutcome_Click(ByVal sender As System.Object,


ByVal

e
> > As System.EventArgs) Handles cmdAddOutcome.Click
> > Dim dr As DatasetOutcomes.OutcomesRow
> >
> > dr = Me.DatasetOutcomes1.Outcomes.NewRow()
> > dr.Item("Name") = Me.txtOutcome.Text
> > dr.Item("DisplayOrder") =
Me.DatasetOutcomes1.Outcomes.Rows.Count
> > ’’DatasetOutcomes1.Outcomes.Rows.InsertAt(dr,
> > Me.DatasetOutcomes1.Outcomes.Rows.Count)
> >
> > DatasetOutcomes1.Outcomes.Rows.Add(dr)
> > Me.DataGridOutcomes.DataBind()
> >
> > Me.lblOutcomes.Text = Me.DatasetOutcomes1.GetXml
> >
> >结束子
> >
> > End Class
> >
> >
> >
>
>





Hi,

Am I trying to hold the data of a DataGrid in a label so that when the form
is reposted the DataGrid can be repopulated. The problem I am having is that
I don''t understand how to get the text into a stream in order to be able to
use DataSetOutcomes1.ReadXML(MyStream).

Thanks in advance,

James
Web Form:

<%@ Page Language="vb" AutoEventWireup="false"
Codebehind="course_new.aspx.vb"
Inherits="_1137InsetBookingSystem.course_new"%>
<!-- #INCLUDE file="headeraspx.inc" -->
<!-- #INCLUDE file="tableheader.inc" -->
<form id="FormNewCourse" method="post" runat="server">
<table cellSpacing="0" cols="3" cellPadding="0" width="100%" border="0">
<tr>
<td vAlign="top"><asp:label id="lblCourseTitle" runat="server"
Font-Bold="True">Course Title</asp:label></td>
<td><asp:textbox id="txtCourseTitle" runat="server"></asp:textbox></td>
<td>&nbsp;</td>
</tr>
<tr>
<td colSpan="3"><asp:label id="lblCourseTutorList" runat="server"
Font-Bold="True">Course Tutor(s)</asp:label></td>
</tr>
<tr>
<td vAlign="top">&nbsp;</td>
<td><asp:textbox id="txtCourseTutor" runat="server"></asp:textbox></td>
<td><asp:button id="cmdAdd" runat="server" Text="Add" BackColor="#F6CD7A"
BorderStyle="Solid" BorderWidth="1px"
Width="80px"></asp:button></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><asp:textbox id="txtTutorList" runat="server" Rows="5"
TextMode="MultiLine"></asp:textbox></td>
<td>&nbsp;</td>
</tr>
<tr>
<td colSpan="3"><asp:label id="lblLearningOutcomes" runat="server"
Font-Bold="True">Learning Outcomes</asp:label></td>
</TD></tr>
<tr>
<td>&nbsp;</td>
<td><asp:textbox id="txtOutcome" runat="server"></asp:textbox></td>
<td><asp:button id="cmdAddOutcome" runat="server" Text="Add"
BackColor="#F6CD7A" BorderStyle="Solid"
BorderWidth="1px" Width="80px"
CausesValidation="False"></asp:button></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><asp:datagrid id=DataGridOutcomes runat="server" GridLines="None"
AutoGenerateColumns="False" DataMember="Outcomes" DataSource="<%#
DatasetOutcomes1 %>">
<HeaderStyle Font-Bold="True"></HeaderStyle>
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<ul>
<li>
</li>
</ul>
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField="Name" SortExpression="Name"
HeaderText="Name"></asp:BoundColumn>
<asp:BoundColumn DataField="DisplayOrder"
SortExpression="DisplayOrder" HeaderText="DisplayOrder"></asp:BoundColumn>
<asp:ButtonColumn Text="Delete"
ButtonType="PushButton"></asp:ButtonColumn>
<asp:ButtonColumn Text="Edit"
ButtonType="PushButton"></asp:ButtonColumn>
</Columns>
</asp:datagrid></td>
<td>&nbsp;</td>
</tr>
<tr>
<td colSpan="3"><asp:label id="lblOutcomes"
runat="server"></asp:label></td>
</tr>
</table>
</form>
<!-- #INCLUDE file="tablefooter.inc" -->
<!-- #INCLUDE file="footer.inc" -->
Code Bind:

Imports System
Imports System.IO
Imports System.Xml
Public Class course_new
Inherits System.Web.UI.Page

#Region " Web Form Designer Generated Code "

''This call is required by the Web Form Designer.
<System.Diagnostics.DebuggerStepThrough()> Private Sub
InitializeComponent()
Me.DatasetOutcomes1 = New _1137InsetBookingSystem.DatasetOutcomes
CType(Me.DatasetOutcomes1,
System.ComponentModel.ISupportInitialize).BeginIni t()
''
''DatasetOutcomes1
''
Me.DatasetOutcomes1.DataSetName = "DatasetOutcomes"
Me.DatasetOutcomes1.Locale = New
System.Globalization.CultureInfo("en-GB")
CType(Me.DatasetOutcomes1,
System.ComponentModel.ISupportInitialize).EndInit( )

End Sub
Protected WithEvents lblCourseTitle As System.Web.UI.WebControls.Label
Protected WithEvents txtCourseTitle As System.Web.UI.WebControls.TextBox
Protected WithEvents txtCourseTutor As System.Web.UI.WebControls.TextBox
Protected WithEvents txtTutorList As System.Web.UI.WebControls.TextBox
Protected WithEvents cmdAdd As System.Web.UI.WebControls.Button
Protected WithEvents txtOutcome As System.Web.UI.WebControls.TextBox
Protected WithEvents cmdAddOutcome As System.Web.UI.WebControls.Button
Protected WithEvents lblCourseTutorList As
System.Web.UI.WebControls.Label
Protected WithEvents lblLearningOutcomes As
System.Web.UI.WebControls.Label
Protected WithEvents DataGridOutcomes As
System.Web.UI.WebControls.DataGrid
Protected WithEvents DatasetOutcomes1 As
_1137InsetBookingSystem.DatasetOutcomes
Protected WithEvents lblOutcomes As System.Web.UI.WebControls.Label

''NOTE: The following placeholder declaration is required by the Web Form
Designer.
''Do not delete or move it.
Private designerPlaceholderDeclaration As System.Object

Private Sub Page_Init(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Init
''CODEGEN: This method call is required by the Web Form Designer
''Do not modify it using the code editor.
InitializeComponent()
End Sub

#End Region
Public gstrTableTitle As String = "Create Course"
Public gstrTableAttribs As String

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
''Put user code to initialize the page here
If Not Page.IsPostBack Then
Me.DataGridOutcomes.DataBind()
Else
Dim str As String = Me.lblOutcomes.Text
Dim MyStream As StreamReader

If str.Length > 0 Then
MyStream = New StreamReader(str)
Me.DatasetOutcomes1.ReadXml(MyStream)

End If

''Me.DatasetOutcomes1.GetXml()
''

End If
End Sub

Private Sub UpdateOutcomes()
Me.DataGridOutcomes.DataSource = Me.DatasetOutcomes1
Me.DataGridOutcomes.DataBind()
End Sub

Private Sub cmdAdd_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cmdAdd.Click

If InStr(Me.txtTutorList.Text, Me.txtCourseTutor.Text) < 1 Then
If Me.txtTutorList.Text.Length > 0 Then
Me.txtTutorList.Text = Me.txtTutorList.Text & ";" & vbCrLf &
Me.txtCourseTutor.Text
Else
Me.txtTutorList.Text = Me.txtCourseTutor.Text
End If
End If
End Sub

Private Sub cmdAddOutcome_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles cmdAddOutcome.Click
Dim dr As DatasetOutcomes.OutcomesRow

dr = Me.DatasetOutcomes1.Outcomes.NewRow()
dr.Item("Name") = Me.txtOutcome.Text
dr.Item("DisplayOrder") = Me.DatasetOutcomes1.Outcomes.Rows.Count
''DatasetOutcomes1.Outcomes.Rows.InsertAt(dr,
Me.DatasetOutcomes1.Outcomes.Rows.Count)

DatasetOutcomes1.Outcomes.Rows.Add(dr)
Me.DataGridOutcomes.DataBind()

Me.lblOutcomes.Text = Me.DatasetOutcomes1.GetXml

End Sub

End Class

解决方案

Most of the time, your code can follow this pattern:

Private Sub Page_Load(ByVal sender As System.Object, ByVal a As
System.EventArgs) Handles MyBase.Load
If Not Page.IsPostBack Then
myDataSet = GetDataSetSomeHow()
myDataGrid.DataSource = myDataSet
myDataGrid.DataMember = "FirstTable"

DataBind()
End If
End Sub

When the page is posted back, the grid (or other controls) will populate
itself from ViewState.
--
John Saunders
Internet Engineer
jo***********@surfcontrol.com
"James Norton-Jones" <ja****************@stopford.com> wrote in message
news:3f***********************@news.easynet.co.uk. ..

Hi,

Am I trying to hold the data of a DataGrid in a label so that when the form is reposted the DataGrid can be repopulated. The problem I am having is that I don''t understand how to get the text into a stream in order to be able to use DataSetOutcomes1.ReadXML(MyStream).

Thanks in advance,

James
Web Form:

<%@ Page Language="vb" AutoEventWireup="false"
Codebehind="course_new.aspx.vb"
Inherits="_1137InsetBookingSystem.course_new"%>
<!-- #INCLUDE file="headeraspx.inc" -->
<!-- #INCLUDE file="tableheader.inc" -->
<form id="FormNewCourse" method="post" runat="server">
<table cellSpacing="0" cols="3" cellPadding="0" width="100%" border="0">
<tr>
<td vAlign="top"><asp:label id="lblCourseTitle" runat="server"
Font-Bold="True">Course Title</asp:label></td>
<td><asp:textbox id="txtCourseTitle" runat="server"></asp:textbox></td>
<td>&nbsp;</td>
</tr>
<tr>
<td colSpan="3"><asp:label id="lblCourseTutorList" runat="server"
Font-Bold="True">Course Tutor(s)</asp:label></td>
</tr>
<tr>
<td vAlign="top">&nbsp;</td>
<td><asp:textbox id="txtCourseTutor" runat="server"></asp:textbox></td>
<td><asp:button id="cmdAdd" runat="server" Text="Add" BackColor="#F6CD7A" BorderStyle="Solid" BorderWidth="1px"
Width="80px"></asp:button></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><asp:textbox id="txtTutorList" runat="server" Rows="5"
TextMode="MultiLine"></asp:textbox></td>
<td>&nbsp;</td>
</tr>
<tr>
<td colSpan="3"><asp:label id="lblLearningOutcomes" runat="server"
Font-Bold="True">Learning Outcomes</asp:label></td>
</TD></tr>
<tr>
<td>&nbsp;</td>
<td><asp:textbox id="txtOutcome" runat="server"></asp:textbox></td>
<td><asp:button id="cmdAddOutcome" runat="server" Text="Add"
BackColor="#F6CD7A" BorderStyle="Solid"
BorderWidth="1px" Width="80px"
CausesValidation="False"></asp:button></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><asp:datagrid id=DataGridOutcomes runat="server" GridLines="None"
AutoGenerateColumns="False" DataMember="Outcomes" DataSource="<%#
DatasetOutcomes1 %>">
<HeaderStyle Font-Bold="True"></HeaderStyle>
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<ul>
<li>
</li>
</ul>
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField="Name" SortExpression="Name"
HeaderText="Name"></asp:BoundColumn>
<asp:BoundColumn DataField="DisplayOrder"
SortExpression="DisplayOrder" HeaderText="DisplayOrder"></asp:BoundColumn>
<asp:ButtonColumn Text="Delete"
ButtonType="PushButton"></asp:ButtonColumn>
<asp:ButtonColumn Text="Edit"
ButtonType="PushButton"></asp:ButtonColumn>
</Columns>
</asp:datagrid></td>
<td>&nbsp;</td>
</tr>
<tr>
<td colSpan="3"><asp:label id="lblOutcomes"
runat="server"></asp:label></td>
</tr>
</table>
</form>
<!-- #INCLUDE file="tablefooter.inc" -->
<!-- #INCLUDE file="footer.inc" -->
Code Bind:

Imports System
Imports System.IO
Imports System.Xml
Public Class course_new
Inherits System.Web.UI.Page

#Region " Web Form Designer Generated Code "

''This call is required by the Web Form Designer.
<System.Diagnostics.DebuggerStepThrough()> Private Sub
InitializeComponent()
Me.DatasetOutcomes1 = New _1137InsetBookingSystem.DatasetOutcomes
CType(Me.DatasetOutcomes1,
System.ComponentModel.ISupportInitialize).BeginIni t()
''
''DatasetOutcomes1
''
Me.DatasetOutcomes1.DataSetName = "DatasetOutcomes"
Me.DatasetOutcomes1.Locale = New
System.Globalization.CultureInfo("en-GB")
CType(Me.DatasetOutcomes1,
System.ComponentModel.ISupportInitialize).EndInit( )

End Sub
Protected WithEvents lblCourseTitle As System.Web.UI.WebControls.Label
Protected WithEvents txtCourseTitle As System.Web.UI.WebControls.TextBox Protected WithEvents txtCourseTutor As System.Web.UI.WebControls.TextBox Protected WithEvents txtTutorList As System.Web.UI.WebControls.TextBox
Protected WithEvents cmdAdd As System.Web.UI.WebControls.Button
Protected WithEvents txtOutcome As System.Web.UI.WebControls.TextBox
Protected WithEvents cmdAddOutcome As System.Web.UI.WebControls.Button
Protected WithEvents lblCourseTutorList As
System.Web.UI.WebControls.Label
Protected WithEvents lblLearningOutcomes As
System.Web.UI.WebControls.Label
Protected WithEvents DataGridOutcomes As
System.Web.UI.WebControls.DataGrid
Protected WithEvents DatasetOutcomes1 As
_1137InsetBookingSystem.DatasetOutcomes
Protected WithEvents lblOutcomes As System.Web.UI.WebControls.Label

''NOTE: The following placeholder declaration is required by the Web Form Designer.
''Do not delete or move it.
Private designerPlaceholderDeclaration As System.Object

Private Sub Page_Init(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Init
''CODEGEN: This method call is required by the Web Form Designer
''Do not modify it using the code editor.
InitializeComponent()
End Sub

#End Region
Public gstrTableTitle As String = "Create Course"
Public gstrTableAttribs As String

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
''Put user code to initialize the page here
If Not Page.IsPostBack Then
Me.DataGridOutcomes.DataBind()
Else
Dim str As String = Me.lblOutcomes.Text
Dim MyStream As StreamReader

If str.Length > 0 Then
MyStream = New StreamReader(str)
Me.DatasetOutcomes1.ReadXml(MyStream)

End If

''Me.DatasetOutcomes1.GetXml()
''

End If
End Sub

Private Sub UpdateOutcomes()
Me.DataGridOutcomes.DataSource = Me.DatasetOutcomes1
Me.DataGridOutcomes.DataBind()
End Sub

Private Sub cmdAdd_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cmdAdd.Click

If InStr(Me.txtTutorList.Text, Me.txtCourseTutor.Text) < 1 Then
If Me.txtTutorList.Text.Length > 0 Then
Me.txtTutorList.Text = Me.txtTutorList.Text & ";" & vbCrLf & Me.txtCourseTutor.Text
Else
Me.txtTutorList.Text = Me.txtCourseTutor.Text
End If
End If
End Sub

Private Sub cmdAddOutcome_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles cmdAddOutcome.Click
Dim dr As DatasetOutcomes.OutcomesRow

dr = Me.DatasetOutcomes1.Outcomes.NewRow()
dr.Item("Name") = Me.txtOutcome.Text
dr.Item("DisplayOrder") = Me.DatasetOutcomes1.Outcomes.Rows.Count
''DatasetOutcomes1.Outcomes.Rows.InsertAt(dr,
Me.DatasetOutcomes1.Outcomes.Rows.Count)

DatasetOutcomes1.Outcomes.Rows.Add(dr)
Me.DataGridOutcomes.DataBind()

Me.lblOutcomes.Text = Me.DatasetOutcomes1.GetXml

End Sub

End Class



DatasetCourse is linked to an xml schema to define the data structure and
the data its self is an xml doc. There is no database behind it, hence the
need to repopulate from the xml data on postback.
Schema:
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema id="DatasetOutcomes"
targetNamespace="http://tempuri.org/DatasetOutcomes.xsd"
elementFormDefault="qualified"
attributeFormDefault="qualified"
xmlns="http://http://localhost/1137InsetBookingSystem/DatasetOutcomes.xsd"
xmlns:mstns="http://tempuri.org/DatasetOutcomes.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="DatasetOutcomes" msdata:IsDataSet="true">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="Outcomes">
<xs:complexType>
<xs:sequence>
<xs:element name="Description" type="xs:string" minOccurs="0" />
<xs:element name="DisplayOrder" type="xs:int" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
<xs:key name="DatasetOutcomesKey1" msdata:PrimaryKey="true">
<xs:selector xpath=".//mstns:Outcomes" />
<xs:field xpath="mstns:Description" />
</xs:key>
</xs:element>
</xs:schema>
"John Saunders" <jo***********@surfcontrol.com> wrote in message
news:u1**************@TK2MSFTNGP09.phx.gbl...

James,

I''m glad you solved your problem, but I''m wondering how you use
DatasetCourse on postbacks?
--
John Saunders
Internet Engineer
jo***********@surfcontrol.com

"James Norton-Jones" <ja****************@stopford.com> wrote in message
news:3f***********************@news.easynet.co.uk. ..

Managed to solve it using:
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
''Put user code to initialize the page here
If Not Page.IsPostBack Then

Me.DataGridOutcomes.DataBind()
Else
''Create the XML fragment to be parsed.
Dim xmlFrag As String = Me.lblOutcomes.Text

If xmlFrag.Length > 0 Then

''Create the XmlNamespaceManager.
Dim nt As NameTable = New NameTable
Dim nsmgr As XmlNamespaceManager = New
XmlNamespaceManager(nt)

''Create the XmlParserContext.
Dim context As XmlParserContext = New
XmlParserContext(Nothing, nsmgr, Nothing, XmlSpace.None)

''Create the reader.
Dim xmlTR As XmlTextReader = New XmlTextReader(xmlFrag,
XmlNodeType.Element, context)

Me.DatasetCourse.ReadXml(xmlTR)

End If
End If
End Sub
"John Saunders" <jo***********@surfcontrol.com> wrote in message
news:OP**************@TK2MSFTNGP09.phx.gbl...

Most of the time, your code can follow this pattern:

Private Sub Page_Load(ByVal sender As System.Object, ByVal a As
System.EventArgs) Handles MyBase.Load
If Not Page.IsPostBack Then
myDataSet = GetDataSetSomeHow()
myDataGrid.DataSource = myDataSet
myDataGrid.DataMember = "FirstTable"

DataBind()
End If
End Sub

When the page is posted back, the grid (or other controls) will populate itself from ViewState.
--
John Saunders
Internet Engineer
jo***********@surfcontrol.com
"James Norton-Jones" <ja****************@stopford.com> wrote in message news:3f***********************@news.easynet.co.uk. ..
> Hi,
>
> Am I trying to hold the data of a DataGrid in a label so that when the form
> is reposted the DataGrid can be repopulated. The problem I am having is that
> I don''t understand how to get the text into a stream in order to be able to
> use DataSetOutcomes1.ReadXML(MyStream).
>
> Thanks in advance,
>
> James
>
>
> Web Form:
>
> <%@ Page Language="vb" AutoEventWireup="false"
> Codebehind="course_new.aspx.vb"
> Inherits="_1137InsetBookingSystem.course_new"%>
> <!-- #INCLUDE file="headeraspx.inc" -->
> <!-- #INCLUDE file="tableheader.inc" -->
> <form id="FormNewCourse" method="post" runat="server">
> <table cellSpacing="0" cols="3" cellPadding="0" width="100%"


border="0">

> <tr>
> <td vAlign="top"><asp:label id="lblCourseTitle" runat="server"
> Font-Bold="True">Course Title</asp:label></td>
> <td><asp:textbox id="txtCourseTitle"


runat="server"></asp:textbox></td>

> <td>&nbsp;</td>
> </tr>
> <tr>
> <td colSpan="3"><asp:label id="lblCourseTutorList" runat="server"
> Font-Bold="True">Course Tutor(s)</asp:label></td>
> </tr>
> <tr>
> <td vAlign="top">&nbsp;</td>
> <td><asp:textbox id="txtCourseTutor"


runat="server"></asp:textbox></td>

> <td><asp:button id="cmdAdd" runat="server" Text="Add"
BackColor="#F6CD7A"
> BorderStyle="Solid" BorderWidth="1px"
> Width="80px"></asp:button></td>
> </tr>
> <tr>
> <td>&nbsp;</td>
> <td><asp:textbox id="txtTutorList" runat="server" Rows="5"
> TextMode="MultiLine"></asp:textbox></td>
> <td>&nbsp;</td>
> </tr>
> <tr>
> <td colSpan="3"><asp:label id="lblLearningOutcomes" runat="server" > Font-Bold="True">Learning Outcomes</asp:label></td>
> </TD></tr>
> <tr>
> <td>&nbsp;</td>
> <td><asp:textbox id="txtOutcome" runat="server"></asp:textbox></td> > <td><asp:button id="cmdAddOutcome" runat="server" Text="Add"
> BackColor="#F6CD7A" BorderStyle="Solid"
> BorderWidth="1px" Width="80px"
> CausesValidation="False"></asp:button></td>
> </tr>
> <tr>
> <td>&nbsp;</td>
> <td><asp:datagrid id=DataGridOutcomes runat="server" GridLines="None" > AutoGenerateColumns="False" DataMember="Outcomes" DataSource="<%#
> DatasetOutcomes1 %>">
> <HeaderStyle Font-Bold="True"></HeaderStyle>
> <Columns>
> <asp:TemplateColumn>
> <ItemTemplate>
> <ul>
> <li>
> </li>
> </ul>
> </ItemTemplate>
> </asp:TemplateColumn>
> <asp:BoundColumn DataField="Name" SortExpression="Name"
> HeaderText="Name"></asp:BoundColumn>
> <asp:BoundColumn DataField="DisplayOrder"
> SortExpression="DisplayOrder"


HeaderText="DisplayOrder"></asp:BoundColumn>

> <asp:ButtonColumn Text="Delete"
> ButtonType="PushButton"></asp:ButtonColumn>
> <asp:ButtonColumn Text="Edit"
> ButtonType="PushButton"></asp:ButtonColumn>
> </Columns>
> </asp:datagrid></td>
> <td>&nbsp;</td>
> </tr>
> <tr>
> <td colSpan="3"><asp:label id="lblOutcomes"
> runat="server"></asp:label></td>
> </tr>
> </table>
> </form>
> <!-- #INCLUDE file="tablefooter.inc" -->
> <!-- #INCLUDE file="footer.inc" -->
>
>
> Code Bind:
>
> Imports System
> Imports System.IO
> Imports System.Xml
>
>
> Public Class course_new
> Inherits System.Web.UI.Page
>
> #Region " Web Form Designer Generated Code "
>
> ''This call is required by the Web Form Designer.
> <System.Diagnostics.DebuggerStepThrough()> Private Sub
> InitializeComponent()
> Me.DatasetOutcomes1 = New


_1137InsetBookingSystem.DatasetOutcomes

> CType(Me.DatasetOutcomes1,
> System.ComponentModel.ISupportInitialize).BeginIni t()
> ''
> ''DatasetOutcomes1
> ''
> Me.DatasetOutcomes1.DataSetName = "DatasetOutcomes"
> Me.DatasetOutcomes1.Locale = New
> System.Globalization.CultureInfo("en-GB")
> CType(Me.DatasetOutcomes1,
> System.ComponentModel.ISupportInitialize).EndInit( )
>
> End Sub
> Protected WithEvents lblCourseTitle As


System.Web.UI.WebControls.Label

> Protected WithEvents txtCourseTitle As
System.Web.UI.WebControls.TextBox
> Protected WithEvents txtCourseTutor As
System.Web.UI.WebControls.TextBox
> Protected WithEvents txtTutorList As


System.Web.UI.WebControls.TextBox

> Protected WithEvents cmdAdd As System.Web.UI.WebControls.Button
> Protected WithEvents txtOutcome As System.Web.UI.WebControls.TextBox > Protected WithEvents cmdAddOutcome As


System.Web.UI.WebControls.Button

> Protected WithEvents lblCourseTutorList As
> System.Web.UI.WebControls.Label
> Protected WithEvents lblLearningOutcomes As
> System.Web.UI.WebControls.Label
> Protected WithEvents DataGridOutcomes As
> System.Web.UI.WebControls.DataGrid
> Protected WithEvents DatasetOutcomes1 As
> _1137InsetBookingSystem.DatasetOutcomes
> Protected WithEvents lblOutcomes As System.Web.UI.WebControls.Label >
> ''NOTE: The following placeholder declaration is required by the Web Form
> Designer.
> ''Do not delete or move it.
> Private designerPlaceholderDeclaration As System.Object
>
> Private Sub Page_Init(ByVal sender As System.Object, ByVal e As
> System.EventArgs) Handles MyBase.Init
> ''CODEGEN: This method call is required by the Web Form Designer > ''Do not modify it using the code editor.
> InitializeComponent()
> End Sub
>
> #End Region
> Public gstrTableTitle As String = "Create Course"
> Public gstrTableAttribs As String
>
> Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
> System.EventArgs) Handles MyBase.Load
> ''Put user code to initialize the page here
> If Not Page.IsPostBack Then
> Me.DataGridOutcomes.DataBind()
> Else
> Dim str As String = Me.lblOutcomes.Text
> Dim MyStream As StreamReader
>
> If str.Length > 0 Then
> MyStream = New StreamReader(str)
> Me.DatasetOutcomes1.ReadXml(MyStream)
>
> End If
>
>
>
> ''Me.DatasetOutcomes1.GetXml()
> ''
>
> End If
> End Sub
>
> Private Sub UpdateOutcomes()
> Me.DataGridOutcomes.DataSource = Me.DatasetOutcomes1
> Me.DataGridOutcomes.DataBind()
> End Sub
>
> Private Sub cmdAdd_Click(ByVal sender As System.Object, ByVal e As > System.EventArgs) Handles cmdAdd.Click
>
> If InStr(Me.txtTutorList.Text, Me.txtCourseTutor.Text) < 1 Then > If Me.txtTutorList.Text.Length > 0 Then
> Me.txtTutorList.Text = Me.txtTutorList.Text & ";" &


vbCrLf

&
> Me.txtCourseTutor.Text
> Else
> Me.txtTutorList.Text = Me.txtCourseTutor.Text
> End If
> End If
> End Sub
>
> Private Sub cmdAddOutcome_Click(ByVal sender As System.Object,


ByVal

e

> As System.EventArgs) Handles cmdAddOutcome.Click
> Dim dr As DatasetOutcomes.OutcomesRow
>
> dr = Me.DatasetOutcomes1.Outcomes.NewRow()
> dr.Item("Name") = Me.txtOutcome.Text
> dr.Item("DisplayOrder") =


Me.DatasetOutcomes1.Outcomes.Rows.Count

> ''DatasetOutcomes1.Outcomes.Rows.InsertAt(dr,
> Me.DatasetOutcomes1.Outcomes.Rows.Count)
>
> DatasetOutcomes1.Outcomes.Rows.Add(dr)
> Me.DataGridOutcomes.DataBind()
>
> Me.lblOutcomes.Text = Me.DatasetOutcomes1.GetXml
>
> End Sub
>
> End Class
>
>
>





Ok, I don''t think I''ve ever used an updateable XML file yet, so I didn''t see
that. In order to update even a single row, you have to read in the entire
file.

Please pardon me for being dense, was your question ever actually answered?
:-)

If I were you, I think I''d store DatasetCourse in Session state. On the
other hand, if you''re going to be making multiple changes to the data per
session, I think I''d keep it in Session, but flush to disk whenever a change
was made. That way, if the session expires (seen as Session("DatasetCourse")
Is Nothing), then you can re-load it from the disk file (which you''ll need
to uniquely name, without resorting to the Session ID!)
--
John Saunders
Internet Engineer
jo***********@surfcontrol.com

"James Norton-Jones" <ja****************@stopford.com> wrote in message
news:3f***********************@news.easynet.co.uk. ..

DatasetCourse is linked to an xml schema to define the data structure and
the data its self is an xml doc. There is no database behind it, hence the
need to repopulate from the xml data on postback.
Schema:
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema id="DatasetOutcomes"
targetNamespace="http://tempuri.org/DatasetOutcomes.xsd"
elementFormDefault="qualified"
attributeFormDefault="qualified"
xmlns="http://http://localhost/1137InsetBookingSystem/DatasetOutcomes.xsd"
xmlns:mstns="http://tempuri.org/DatasetOutcomes.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="DatasetOutcomes" msdata:IsDataSet="true">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="Outcomes">
<xs:complexType>
<xs:sequence>
<xs:element name="Description" type="xs:string" minOccurs="0" />
<xs:element name="DisplayOrder" type="xs:int" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
<xs:key name="DatasetOutcomesKey1" msdata:PrimaryKey="true">
<xs:selector xpath=".//mstns:Outcomes" />
<xs:field xpath="mstns:Description" />
</xs:key>
</xs:element>
</xs:schema>
"John Saunders" <jo***********@surfcontrol.com> wrote in message
news:u1**************@TK2MSFTNGP09.phx.gbl...

James,

I''m glad you solved your problem, but I''m wondering how you use
DatasetCourse on postbacks?
--
John Saunders
Internet Engineer
jo***********@surfcontrol.com

"James Norton-Jones" <ja****************@stopford.com> wrote in message
news:3f***********************@news.easynet.co.uk. ..

Managed to solve it using:
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
''Put user code to initialize the page here
If Not Page.IsPostBack Then

Me.DataGridOutcomes.DataBind()
Else
''Create the XML fragment to be parsed.
Dim xmlFrag As String = Me.lblOutcomes.Text

If xmlFrag.Length > 0 Then

''Create the XmlNamespaceManager.
Dim nt As NameTable = New NameTable
Dim nsmgr As XmlNamespaceManager = New
XmlNamespaceManager(nt)

''Create the XmlParserContext.
Dim context As XmlParserContext = New
XmlParserContext(Nothing, nsmgr, Nothing, XmlSpace.None)

''Create the reader.
Dim xmlTR As XmlTextReader = New XmlTextReader(xmlFrag, XmlNodeType.Element, context)

Me.DatasetCourse.ReadXml(xmlTR)

End If
End If
End Sub
"John Saunders" <jo***********@surfcontrol.com> wrote in message
news:OP**************@TK2MSFTNGP09.phx.gbl...
> Most of the time, your code can follow this pattern:
>
> Private Sub Page_Load(ByVal sender As System.Object, ByVal a As
> System.EventArgs) Handles MyBase.Load
> If Not Page.IsPostBack Then
> myDataSet = GetDataSetSomeHow()
> myDataGrid.DataSource = myDataSet
> myDataGrid.DataMember = "FirstTable"
>
> DataBind()
> End If
> End Sub
>
> When the page is posted back, the grid (or other controls) will populate > itself from ViewState.
> --
> John Saunders
> Internet Engineer
> jo***********@surfcontrol.com
>
>
> "James Norton-Jones" <ja****************@stopford.com> wrote in message > news:3f***********************@news.easynet.co.uk. ..
> > Hi,
> >
> > Am I trying to hold the data of a DataGrid in a label so that when the > form
> > is reposted the DataGrid can be repopulated. The problem I am having

is

> that
> > I don''t understand how to get the text into a stream in order to

be

able

> to
> > use DataSetOutcomes1.ReadXML(MyStream).
> >
> > Thanks in advance,
> >
> > James
> >
> >
> > Web Form:
> >
> > <%@ Page Language="vb" AutoEventWireup="false"
> > Codebehind="course_new.aspx.vb"
> > Inherits="_1137InsetBookingSystem.course_new"%>
> > <!-- #INCLUDE file="headeraspx.inc" -->
> > <!-- #INCLUDE file="tableheader.inc" -->
> > <form id="FormNewCourse" method="post" runat="server">
> > <table cellSpacing="0" cols="3" cellPadding="0" width="100%"
border="0">
> > <tr>
> > <td vAlign="top"><asp:label id="lblCourseTitle" runat="server"
> > Font-Bold="True">Course Title</asp:label></td>
> > <td><asp:textbox id="txtCourseTitle"
runat="server"></asp:textbox></td>
> > <td>&nbsp;</td>
> > </tr>
> > <tr>
> > <td colSpan="3"><asp:label id="lblCourseTutorList"

runat="server" > > Font-Bold="True">Course Tutor(s)</asp:label></td>
> > </tr>
> > <tr>
> > <td vAlign="top">&nbsp;</td>
> > <td><asp:textbox id="txtCourseTutor"
runat="server"></asp:textbox></td>
> > <td><asp:button id="cmdAdd" runat="server" Text="Add"
> BackColor="#F6CD7A"
> > BorderStyle="Solid" BorderWidth="1px"
> > Width="80px"></asp:button></td>
> > </tr>
> > <tr>
> > <td>&nbsp;</td>
> > <td><asp:textbox id="txtTutorList" runat="server" Rows="5"
> > TextMode="MultiLine"></asp:textbox></td>
> > <td>&nbsp;</td>
> > </tr>
> > <tr>
> > <td colSpan="3"><asp:label id="lblLearningOutcomes"

runat="server" > > Font-Bold="True">Learning Outcomes</asp:label></td>
> > </TD></tr>
> > <tr>
> > <td>&nbsp;</td>
> > <td><asp:textbox id="txtOutcome" runat="server"></asp:textbox></td> > > <td><asp:button id="cmdAddOutcome" runat="server" Text="Add"
> > BackColor="#F6CD7A" BorderStyle="Solid"
> > BorderWidth="1px" Width="80px"
> > CausesValidation="False"></asp:button></td>
> > </tr>
> > <tr>
> > <td>&nbsp;</td>
> > <td><asp:datagrid id=DataGridOutcomes runat="server"


GridLines="None"

> > AutoGenerateColumns="False" DataMember="Outcomes" DataSource="<%#
> > DatasetOutcomes1 %>">
> > <HeaderStyle Font-Bold="True"></HeaderStyle>
> > <Columns>
> > <asp:TemplateColumn>
> > <ItemTemplate>
> > <ul>
> > <li>
> > </li>
> > </ul>
> > </ItemTemplate>
> > </asp:TemplateColumn>
> > <asp:BoundColumn DataField="Name" SortExpression="Name"
> > HeaderText="Name"></asp:BoundColumn>
> > <asp:BoundColumn DataField="DisplayOrder"
> > SortExpression="DisplayOrder"
HeaderText="DisplayOrder"></asp:BoundColumn>
> > <asp:ButtonColumn Text="Delete"
> > ButtonType="PushButton"></asp:ButtonColumn>
> > <asp:ButtonColumn Text="Edit"
> > ButtonType="PushButton"></asp:ButtonColumn>
> > </Columns>
> > </asp:datagrid></td>
> > <td>&nbsp;</td>
> > </tr>
> > <tr>
> > <td colSpan="3"><asp:label id="lblOutcomes"
> > runat="server"></asp:label></td>
> > </tr>
> > </table>
> > </form>
> > <!-- #INCLUDE file="tablefooter.inc" -->
> > <!-- #INCLUDE file="footer.inc" -->
> >
> >
> > Code Bind:
> >
> > Imports System
> > Imports System.IO
> > Imports System.Xml
> >
> >
> > Public Class course_new
> > Inherits System.Web.UI.Page
> >
> > #Region " Web Form Designer Generated Code "
> >
> > ''This call is required by the Web Form Designer.
> > <System.Diagnostics.DebuggerStepThrough()> Private Sub
> > InitializeComponent()
> > Me.DatasetOutcomes1 = New
_1137InsetBookingSystem.DatasetOutcomes
> > CType(Me.DatasetOutcomes1,
> > System.ComponentModel.ISupportInitialize).BeginIni t()
> > ''
> > ''DatasetOutcomes1
> > ''
> > Me.DatasetOutcomes1.DataSetName = "DatasetOutcomes"
> > Me.DatasetOutcomes1.Locale = New
> > System.Globalization.CultureInfo("en-GB")
> > CType(Me.DatasetOutcomes1,
> > System.ComponentModel.ISupportInitialize).EndInit( )
> >
> > End Sub
> > Protected WithEvents lblCourseTitle As
System.Web.UI.WebControls.Label
> > Protected WithEvents txtCourseTitle As
> System.Web.UI.WebControls.TextBox
> > Protected WithEvents txtCourseTutor As
> System.Web.UI.WebControls.TextBox
> > Protected WithEvents txtTutorList As
System.Web.UI.WebControls.TextBox
> > Protected WithEvents cmdAdd As System.Web.UI.WebControls.Button > > Protected WithEvents txtOutcome As


System.Web.UI.WebControls.TextBox

> > Protected WithEvents cmdAddOutcome As
System.Web.UI.WebControls.Button
> > Protected WithEvents lblCourseTutorList As
> > System.Web.UI.WebControls.Label
> > Protected WithEvents lblLearningOutcomes As
> > System.Web.UI.WebControls.Label
> > Protected WithEvents DataGridOutcomes As
> > System.Web.UI.WebControls.DataGrid
> > Protected WithEvents DatasetOutcomes1 As
> > _1137InsetBookingSystem.DatasetOutcomes
> > Protected WithEvents lblOutcomes As


System.Web.UI.WebControls.Label

> >
> > ''NOTE: The following placeholder declaration is required by the Web

> Form
> > Designer.
> > ''Do not delete or move it.
> > Private designerPlaceholderDeclaration As System.Object
> >
> > Private Sub Page_Init(ByVal sender As System.Object, ByVal e

As > > System.EventArgs) Handles MyBase.Init
> > ''CODEGEN: This method call is required by the Web Form


Designer

> > ''Do not modify it using the code editor.
> > InitializeComponent()
> > End Sub
> >
> > #End Region
> > Public gstrTableTitle As String = "Create Course"
> > Public gstrTableAttribs As String
> >
> > Private Sub Page_Load(ByVal sender As System.Object, ByVal e As > > System.EventArgs) Handles MyBase.Load
> > ''Put user code to initialize the page here
> > If Not Page.IsPostBack Then
> > Me.DataGridOutcomes.DataBind()
> > Else
> > Dim str As String = Me.lblOutcomes.Text
> > Dim MyStream As StreamReader
> >
> > If str.Length > 0 Then
> > MyStream = New StreamReader(str)
> > Me.DatasetOutcomes1.ReadXml(MyStream)
> >
> > End If
> >
> >
> >
> > ''Me.DatasetOutcomes1.GetXml()
> > ''
> >
> > End If
> > End Sub
> >
> > Private Sub UpdateOutcomes()
> > Me.DataGridOutcomes.DataSource = Me.DatasetOutcomes1
> > Me.DataGridOutcomes.DataBind()
> > End Sub
> >
> > Private Sub cmdAdd_Click(ByVal sender As System.Object, ByVal e As > > System.EventArgs) Handles cmdAdd.Click
> >
> > If InStr(Me.txtTutorList.Text, Me.txtCourseTutor.Text) < 1


Then

> > If Me.txtTutorList.Text.Length > 0 Then
> > Me.txtTutorList.Text = Me.txtTutorList.Text & ";"


& vbCrLf
> &
> > Me.txtCourseTutor.Text
> > Else
> > Me.txtTutorList.Text = Me.txtCourseTutor.Text
> > End If
> > End If
> > End Sub
> >
> > Private Sub cmdAddOutcome_Click(ByVal sender As System.Object,


ByVal

e
> > As System.EventArgs) Handles cmdAddOutcome.Click
> > Dim dr As DatasetOutcomes.OutcomesRow
> >
> > dr = Me.DatasetOutcomes1.Outcomes.NewRow()
> > dr.Item("Name") = Me.txtOutcome.Text
> > dr.Item("DisplayOrder") =
Me.DatasetOutcomes1.Outcomes.Rows.Count
> > ''DatasetOutcomes1.Outcomes.Rows.InsertAt(dr,
> > Me.DatasetOutcomes1.Outcomes.Rows.Count)
> >
> > DatasetOutcomes1.Outcomes.Rows.Add(dr)
> > Me.DataGridOutcomes.DataBind()
> >
> > Me.lblOutcomes.Text = Me.DatasetOutcomes1.GetXml
> >
> > End Sub
> >
> > End Class
> >
> >
> >
>
>





这篇关于将字符串放在流上以读入DataGrid的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆