0

XML ファイルから機能する編集可能な GridView コントロールがあります。GridView には、xml ファイルにページの読み込みに関するデータが含まれていないため、空のデータ テンプレートが含まれています。empty-data-template は、2 つのテキスト ボックス コントロールと、データを xml ファイルに配置するためのリンク ボタンで構成されているため、Gridview が表示されます。私の問題は、リンク ボタンをクリックすると、次の行に応答してオブジェクト参照関連のエラーが発生すること です下:

背後にあるコード:

Public Sub writeStartpoNum()
        Dim startpoNumID As String = DirectCast(gvPurchaseOrderNum.Controls(0).Controls(0).FindControl("txtStartpoNumID"), TextBox).Text
        Dim startpoNum As String = DirectCast(gvPurchaseOrderNum.Controls(0).Controls(0).FindControl("txtStartpoNum"), TextBox).Text
        Dim oDs As New DataSet()
        Dim xmlPath As String = MapPath("~/xml/newShipment.xml")
        If Not System.IO.File.Exists(xmlPath) Then
            oDs.DataSetName = "newShipmentNotification"
            oDs.Tables.Add("pos")
            oDs.Tables("pos").Columns.Add("pos_Id")
            oDs.Tables("pos").Columns("pos_Id").ColumnMapping = MappingType.Hidden
            oDs.Tables.Add("po")
            oDs.Tables("po").Columns.Add("ponumberID")
            oDs.Tables("po").Columns.Add("pos_Id")
            oDs.Tables("po").Columns("pos_Id").ColumnMapping = MappingType.Hidden
            oDs.Tables("po").Columns.Add("ponumber")
            Dim pos_po As DataRelation = oDs.Relations.Add("pos_po", oDs.Tables("pos").Columns("pos_Id"), _
            oDs.Tables("po").Columns("pos_Id"))
            pos_po.Nested = True
            Dim oDrs As DataRow = oDs.Tables("pos").NewRow
            oDrs("pos_Id") = 0
            oDs.Tables("pos").Rows.Add(oDrs)
        Else
            oDs.ReadXml(Server.MapPath("~/xml/newShipment.xml"))
        End If
        Dim oDr As DataRow = oDs.Tables("po").NewRow
        oDr("ponumberID") = startpoNumID
        oDr("ponumber") = startpoNum
        oDr("pos_Id") = 0
        oDs.Tables("po").Rows.Add(oDr)
        oDs.WriteXml(Server.MapPath("~/xml/newShipment.xml"))
        gvPurchaseOrderNum.DataSource = oDs.Tables("po")
        gvPurchaseOrderNum.DataBind()
    End Sub

...これは、Gridview の空のデータ テンプレートのデザインです。

<emptydatatemplate>
<b>Enter Purchase Order Number:</b> <br /> 
<asp:TextBox ID="txtStartpoNumID" runat="server"></asp:TextBox>&nbsp;
<asp:TextBox ID="txtStartpoNum" runat="server"></asp:TextBox><br />
<asp:LinkButton ID="lnkpro" runat="server" OnClick="writeStartpoNum"  Text="Add Purchase order Number"></asp:LinkButton> 
<br /><br />
</emptydatatemplate> 

...これは、xml ファイルにページの読み込みに関するデータが含まれている場合に、xml ファイルのデータを消去する関数の結果として、ページの読み込み時に xml がどのように反映されるかを示しています。

<?xml version="1.0" standalone="yes"?>
<newShipmentNotification>
  <pos />
</newShipmentNotification>

...前述したように、デバッグすると、問題は次の行から発生します

Dim oDr As DataRow = oDs.Tables("po").NewRow

xml は、条件ステートメントを介して構築されます。私が理解できないのは、データセット変数 (oD) が、デバッグ モードで表示したときにposテーブルを反映しているにもかかわらず、オブジェクト参照関連のエラーを生成する理由です。ここで間違っている可能性があるか、何か不足している場合は、何らかの方向性を示してください。ありがとう

4

1 に答える 1