0

null例外がスローされます。理由を理解するのを手伝ってもらえますか?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Collections;
using System.Data;
using System.Data.SqlClient;


namespace ProjectEta
{
    public partial class File_Viewer : System.Web.UI.Page
    {
        public string CurDate = DateTime.Today.ToString("dd/MM/yyyy");

        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void ListView1_ItemDataBound(object sender, ListViewItemEventArgs e)
        {
            if (e.Item.ItemType == ListViewItemType.DataItem)
            {

                TextBox OpenDateTextBox = (TextBox)e.Item.FindControl("OpenDateTextBox");

                OpenDateTextBox.Text = "12/12/2012";

                DataRowView rowView = e.Item.DataItem as DataRowView;
                string myCurDate = rowView["OpenDate"].ToString();
            }

        }

    }
}

これがaspxです。

<InsertItemTemplate>
            <tr style="font-size: smaller; text-align: center;">
                <td>
                    <asp:Button ID="InsertButton" runat="server" CommandName="Insert" Text="Insert" />
                    <asp:Button ID="CancelButton" runat="server" CommandName="Cancel" Text="Clear" />
                </td>
                <td>&nbsp</td>
                <td>
                    <asp:DropDownList ID="ProcessorIdDrop" runat="server" DataSourceID="UserNames" DataTextField="Name" Text='<%# Bind("ProcessorId") %>' ></asp:DropDownList>
                </td>
                <td>
                    <asp:DropDownList ID="DropDownList4" runat="server" DataSourceID="UserNames" DataTextField="Name" Text='<%# Bind("UnderwriterId") %>' ></asp:DropDownList>
                </td>
                <td>
                    <asp:DropDownList ID="DropDownList5" runat="server" DataSourceID="FileStatusTypes" DataTextField="FileStat" Text='<%# Bind("Status") %>' ></asp:DropDownList>

                </td>
                <td>
                    <asp:TextBox ID="OpenDateTextBox" runat="server" Text='<%# Bind("OpenDate") %>' />
                </td>
                <td>
                    <asp:Label ID="CloseDateTextBox" runat="server" Text='<%# Eval("CloseDate") %>' />
                </td>
                <td>
                    <asp:TextBox ID="BorrowerIdTextBox" runat="server" Text='<%# Bind("BorrowerId") %>' />
                </td>
                <td>
                <asp:DropDownList ID="Lender_LenderIdDrop" runat="server" DataSourceID="LenderNames" DataTextField="Name" DataValueField="Name" Text='<%# Bind("Lender_LenderId") %>'></asp:DropDownList>
                </td>
                <td>
                    <asp:TextBox ID="Client_ClientIdTextBox" runat="server" Text='<%# Bind("Client_ClientId") %>' />
                </td>
            </tr>
        </InsertItemTemplate>

この投稿の提案に従って、コードビハインドからリストビュー内にラベルテキストを設定する方法を説明しましたが、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というメッセージが表示されます。OpenDateTextBoxはaspxのテキストボックスのIDであるため、この問題は発生しないと思いました。これは初心者の質問だと思いますが、助けていただければ幸いです。

4

2 に答える 2

0

は内部ではなく、の中にあるNullReferenceExceptionためです。したがって、次の代わりにチェックする必要があります:TextBoxItemTemplateInsertItemTemplateListViewItemType.InsertItemDataItem

protected void ListView1_ItemDataBound(object sender, ListViewItemEventArgs e)
{
    // note the ListViewItemType.InsertItem !!!
    if (e.Item.ItemType == ListViewItemType.InsertItem)
    {

        TextBox OpenDateTextBox = (TextBox)e.Item.FindControl("OpenDateTextBox");
        OpenDateTextBox.Text = "12/12/2012";
    }
}

これらの行を削除したことにも注意してください。

DataRowView rowView = e.Item.DataItem as DataRowView;
string myCurDate = rowView["OpenDate"].ToString();

(もちろん)DataItemにはありませんので。InsertItemTemplate

于 2013-01-01T21:54:02.843 に答える
0

本当の問題はイベントの選択にあるようです。ItemDataBoundからItemCreatedに変更しましたが、問題なく動作しました。ガイダンスを提供してくれた人々に感謝します。

于 2013-01-03T00:34:37.167 に答える